在不同版本的@angular/cli中,层次结构注入器中的Directive行为的确存在差异。在某些情况下,这可能会导致指令在应用层次结构中的某些组件上不起作用。
解决这个问题的方法是在指令上使用viewProviders
属性,并将其设置为[
。这将确保指令在应用层次结构中的每个组件上都可见。
下面是一个示例,展示了在不同版本的@angular/cli中解决这个问题的方法:
在Angular 9.0.2中:
import { Directive } from '@angular/core';
@Directive({
selector: '[appCustomDirective]',
viewProviders: [{ provide: CustomDirective }]
})
export class CustomDirective {
// Directive logic here
}
在Angular 8.3.14中:
import { Directive } from '@angular/core';
@Directive({
selector: '[appCustomDirective]',
providers: [{ provide: CustomDirective }]
})
export class CustomDirective {
// Directive logic here
}
通过在指令上使用viewProviders
或providers
属性,您可以确保该指令在应用层次结构中的每个组件上都可见,无论使用的是哪个版本的@angular/cli。