如果我有:
@Component({
selector: 'app1',
templateUrl: './app1.html',
})
export class A implement OnInit {
ngOnInit() {
}
}
@Component({
selector: 'app2',
templateUrl: './app2.html',
})
export class B implement OnInit {
ngOnInit() {
}
}
然后如何从A类调用B类的ngOnInit()
,我的B类模板应该更新(渲染)?
答案 0 :(得分:1)
好的所以这是@ViewChild()解决方案。 ViewChild允许您从父组件控制您的孩子。我们假设您有MyMain.component.ts和MyChild.component.ts(名称为' MyChildComponent')。
在您的父级中,创建一个变量:ViewChild(MyChildComponent)childComponent:MyChildComponent。现在您可以访问子函数和变量。
在父母
中创建一个功能refreshChild(data) { this.childComponent.refreshFromParent(data); }
和你孩子的另一个
refreshFromParent(data) { this.data = data ... }
答案 1 :(得分:1)
为此,您必须使组分 B 可注射。我们为此使用 @Injectable() 并在其中使用一个提供程序作为providIn: 'root'。
@Component({
selector: 'app1',
templateUrl: './app1.html',
})
export class A implement OnInit {
constructor( private a: A ){}
ngOnInit() {
this.a.ngOnInit();
}
}
@Component({
selector: 'app2',
templateUrl: './app2.html',
})
@Injectable({
providedIn: 'root',
})
export class B implement OnInit {
ngOnInit() {
}
}
这对我有用,请告诉我这是否有效