Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
361 views
in Technique[技术] by (71.8m points)

angular怎么全局引入NzModalService

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

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

你没有办法这样做。

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...