Angular组件定义中的提供者,ChangeDetection,封装,主机

时间:2019-04-06 04:59:13

标签: angular typescript npm

我看到一些软件包,它们在以下软件包中提供了提供者封装 changeDetections 主机码。关于以下代码,它们的含义是什么以及它在组件类中的行为。

@Component({
    selector: 'ng-select',
    templateUrl: './ng-select.component.html',
    styleUrls: ['./ng-select.component.scss'],
    providers: [{
        provide: NG_VALUE_ACCESSOR,
        useExisting: forwardRef(() => NgSelectComponent),
        multi: true
    }],
    encapsulation: ViewEncapsulation.None,
    changeDetection: ChangeDetectionStrategy.OnPush,
    host: {
        'role': 'listbox',
        'class': 'ng-select',
        '[class.ng-select-single]': '!multiple',
    }
})

1 个答案:

答案 0 :(得分:1)

这意味着跟随事物

  • 封装(如果使用ViewEncapsulation.None),则意味着您将编写样式属性或styleUrl:(css文件)的样式将是全局范围,因此如果您拥有

    。危险{ 红色 } 您也可以在组件外部使用该样式

  • 主机意味着您要在主机元素本身上添加属性,例如,在这种情况下,它将添加下一个属性

    ng-select角色类=“ ng-select” \

  • 提供者意味着您在此处注入的服务将仅在组件级别可用,并且如果您具有两个不同的ng-select,则它们都将具有该类的不同实例

  • 变更检测,您可以配置变更检测在此组件上的工作方式,默认情况下,它将在每个变更检测周期上同时运行此组件,OnPush策略意味着只有在以下情况下,它将在此组件上进行变更检测:输入属性引用已更改