angular怎么全局引入NzModalService

发布于 2022-09-12 03:50:01 字数 272 浏览 11 评论 0

每个需要用到NzModalService的地方都单独引入一遍,觉得好麻烦,可以全局引入吗?

import { NzModalService } from 'ng-zorro-antd/modal';
export class xxxComponent implements OnInit {
    constructor(
        // 组件里单独引入麻烦,想全局引入
        private modal: NzModalService
    ) { }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

久隐师 2022-09-19 03:50:01

你没有办法这样做。

  1. angular中每个组件都是可以独立、可供单独进行测试的。如果可以全局引入某个service,则组件将依赖于全局,这里的全局应该指应用上下文。也就是说:组件必须被应用到特定的上下文中才能使用。这违背了angular组件独立的原则。
  2. angular的摇树优化也不允许我们这么做。为了减轻angular应用在启动时的体积,在应用被构建时angular可以很聪明的将当前应用(惰性加载时可能是模块)不需要的服务掉,从而减少用户请求的体积。如果可以全局注入某个服务,那么无论该服务是否被当前组件使用,都无法被掉,这也违背了angular的设计原则。

angular官方文档中并未找到相关的说明,所以以上纯属个人猜想。

奶气 2022-09-19 03:50:01

NzModalService 的地暖管一
`@Injectable()

export class NzModalService implements OnDestroy {

...code here

}

@NgModule({

imports: [

*code here

],

exports: [*],

providers: [NzModalService],

entryComponents: [*],

declarations: [

*code

]

})

export class NzModalModule {}

`

从以上得知,ngModalService不是全局服务,导入时依赖于NzModalModule,在Angular文档里面没有全局module的概念,但是你可以参照BrowserModule,对于运行在浏览器中的应用来说,都必须在根模块中 AppModule 导入 BrowserModule,因为它提供了启动和运行浏览器应用时某些必须的服务。BrowserModule 的提供者是面向整个应用的,所以它只能在根模块中使用,而不是特性模块。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文