gpt4 book ai didi

angular - 在 MatDialog 中提供额外的提供程序

转载 作者:行者123 更新时间:2023-12-03 08:52:01 32 4
gpt4 key购买 nike

假设您有 Angular 服务,但没有 ProvideIn,因此它仅在某些组件及其子组件中可用。现在,这样一个组件打开了 MatDialog——是否可以在那里注入(inject)该服务?

正如我所见,默认情况下 Angular 不会将 MatDialog 组件视为调用者组件的子组件,而且我也没有看到任何可以更改它的设置。

附注这里的服务是有状态的,因此只需将其交给 MyDialogComponent 的提供者就会创建新的服务,这是不希望的。

最佳答案

您所要做的就是为dialog.open方法提供所需服务实例所在的ViewContainerRef。 “VERY_IMPORTANT_SERVICE”将可用于在“SomeComponent”中注入(inject)。请参阅下面的代码

@Component({
selector: 'cmp',
providers: [ VERY_IMPORTANT_SERVICE ]
})
export class Component {
constructor(private dialog: MatDialog, private viewContainerRef: ViewContainerRef) {}

openDialog() {
this.dialog.open(SomeComponent, {
viewContainerRef: this.viewContainerRef
})
}
}

关于angular - 在 MatDialog 中提供额外的提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58284520/

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