#angular #typescript
Вопрос:
Дочерние компоненты являются лениво загруженными компонентами, поэтому
lt;розетка маршрутизатора #дочерняя gt;
родитель
«ребенок.метод ребенка()»
это не работает ,не могли бы вы, пожалуйста, кто-нибудь помочь мне вызвать дочерний метод из родительского компонента, а также как я могу передавать данные из/в между дочерним и родительским компонентом.Это будет похоже на основной макет и сценарий различных дочерних компонентов.
Ответ №1:
Из моего понимания angular, использование child.childMethod()
не будет возможным при такой ленивой загрузке компонента, потому что родитель не знает, что он загрузит.
Если вы пытаетесь запустить childMethod()
несколько раз, использование службы может быть вариантом.
Он будет предоставлен в том parent
, который вы затем сможете использовать в child
том.
Затем вы можете запустить childMethod()
его, подписавшись на поставщика из parentService
// parent.module.ts providers: [ ParentService ]
// parent.service.ts triggerChildMethod$: BehaviorSubjectlt;booleangt; = new BehaviorSubject(null)
// parent.component.ts constructor(private _parentService: ParentService) {} childMethod() { this._parentService.next(true); }
// child.component.ts constructor(private _parentService: ParentService) {} ngOnInit() { this._parentService .pipe( filter((event) =gt; (typeof event === "boolean" ? true : false)), // Avoid triggered on instantiating takeUntil(this._unsubscribeAll), // Do not forget to unsubscribe ) .subscribe((value) =gt; { this.childMethod() // Here you are }) }
Комментарии:
1. Спасибо ,Рафаэль, Позволь мне попробовать это
2. @Aja Сработало ли это, вам нужна дополнительная помощь в этом ?