我遇到了一个奇怪的问题。
我有一个NotificationService
调用Bootstrap notify来显示一些咆哮样式的消息。我试图在构造函数中注入ngZone
。这在JIT模式下工作,但在AOT模式下失败,并且“无法调用runOutSideAngular()
未定义”。进一步调试显示构造函数注入在AOT模式下失败,但在Dev(JIT)模式下注入良好。
但是,我也在我的app.component.ts中注入了ngZone
,并且它在AOT和JIT都注入了很好。
顺便说一下,服务作为根模块中的提供者加载。我无法弄清楚为什么注射失败了。我也尝试使用@Inject(NgZone)进行explict注射,并尝试使用forwardRef推迟注射无效。
在Dev / JIT中:
这是我的NotificationService:
export namespace Notification {
@Injectable()
export class NotificationService {
notifier: any;
constructor(private ngZone: NgZone) {
console.log('message from NotificationService constructor ngZone is ', this.ngZone);
}
我在这里缺少什么?
答案 0 :(得分:1)
对于任何想要了解导致此问题的人 - 这是由于命名空间。无论出于何种原因,如果类在命名空间内,则注入不起作用。不确定这是否是Angular本身的问题。我必须删除命名空间,然后注入正常工作 - 不理想,因为我想使用命名空间,但我可以忍受它。