gpt4 book ai didi

angular - 在 Angular2 中访问子组件的提供者

转载 作者:行者123 更新时间:2023-12-02 21:03:39 24 4
gpt4 key购买 nike

假设我有一个组件,它使用来自 Github 的第三方组件,该组件定义了自己的提供程序。

<my-component>
<awesome-contrib-component></awesome-contrib-component>
</my-component>

对于awesome-contrib-component提供商:

@Component({
selector: 'awesome-contrib-component',
providers: [FooProvider]
})

据我所知,即使我在应用程序引导级别甚至在 my-component (使用提供程序或 viewProviders)提供 FooProvider ,因为 awesome-contrib-component 指定它自己的提供者,它总是获取它自己的实例。

问题是在 my-component 中,我需要访问 awesome- 使用的 FooProvider相同实例contrib-component 但我无法获取它。

这可能吗?我错过了什么吗?谢谢!

这里要强调的重要一点是,awesome-contrib-component 是来自 Github 的第 3 方模块,它定义了自己的提供程序,并将 FooProvider 分配给自己作为私有(private)变量并且不公开它。

作为使用这个第 3 方库的人,没有打开 PR(我就是这么做的),我不知道如何解决这个问题。

最佳答案

使用@ViewChild,或者如果您有多个子项,请使用@Children,如下所示

@Component({
selector: 'my-component',
directives: [AwesomeContribComponent]
})
export class MyComponent{
@ViewChild(AwesomeContribComponent) public childInstance: AwesomeContribComponent

ngAfterViewInit(){
console.log(this.childInstance.fooProvider); // you got the service
}

}

@Component({
selector: 'awesome-contrib-component',
providers: [FooProvider]
})
export class AwesomeContribComponent {
constructor(public fooProvider: FooProvider){}
}

关于angular - 在 Angular2 中访问子组件的提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37100891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com