Javascript ng选择角度2中不更新

Javascript ng选择角度2中不更新,javascript,angular,angular-ngselect,Javascript,Angular,Angular Ngselect,你好,我是新来的 我可以在外接程序ng中使formGroup选择控件并预定义附加值 这是完全正确的。 但当按钮点击后,新值按入ng select,但ng select不更新 这是我的宝贝 //我们的根应用程序组件 从“@angular/core”导入{Component,OnInit,NgModule,ViewChild}; 从“@angular/platform browser”导入{BrowserModule}; 从'@angular/forms'导入{FormControl,FormGr

你好,我是新来的

我可以在外接程序ng中使formGroup选择控件并预定义附加值

这是完全正确的。 但当按钮点击后,新值按入ng select,但ng select不更新

这是我的宝贝

//我们的根应用程序组件
从“@angular/core”导入{Component,OnInit,NgModule,ViewChild};
从“@angular/platform browser”导入{BrowserModule};
从'@angular/forms'导入{FormControl,FormGroup,ReactiveFormsModule};
从'ng select'导入{SelectModule};
@组成部分({
选择器:“我的应用程序”,
模板:`
ng选择演示应用程序
单选示例
点击
活动:
{{logSingleString}}
`
})
导出类应用程序实现OnInit{
表格:表格组;
倍数0:布尔值=假;
选项0:任意[]=[];
选择:数组;
@ViewChild('preSingle')preSingle;
logSingleString:string='';
构造函数(){
this.options0.push({“label”:'test',“value”:'test'});
log(“对象::”+JSON.stringify(this.options0));
}
恩戈尼尼特(){
this.form=newformgroup({});
this.form.addControl('selectSingle',new-FormControl('');
log(“对象::”+JSON.stringify(this.options0));
}
pushValue()
{
log(“pushValue调用”);
this.options0.push({“label”:“test”,“value”:“test”});
log(“对象::”+JSON.stringify(this.options0));
}
}
@NGD模块({
进口:[
浏览器模块,
反应形式模块,
选择模块
],
声明:[App],
引导:[应用程序]
})
导出类AppModule{}

哪里错了?

查看
ng选择
我注意到的源代码

ngOnChanges(changes: any) {
  if (changes.hasOwnProperty('options')) {
     this.updateOptionsList(changes['options'].isFirstChange());
  }
因此,为了更新选项列表,您应该启动
ngOnChanges
。可以通过创建对
选项0

this.options0 = this.options0.concat({"label":"test","value":"Test"});


您可以使用
Array.slice()
更新到数组实例,以便Angle检测数组的变化

this.options0 = this.options0.slice();

更改检测

Ng select组件实现了
OnPush
更改检测,这意味着对不可变数据类型进行脏检查。这意味着如果您执行以下操作:

this.items.push({id: 1, name: 'New item'})
组件将不会检测到更改。相反,您需要执行以下操作:

this.items = [...this.items, {id: 1, name: 'New item'}];
这将导致组件检测到更改和更新。有些人可能会担心这是一个昂贵的操作,但是,它比运行
ngDoCheck
并不断分散阵列的性能要好得多

this.items.push({id: 1, name: 'New item'})
this.items = [...this.items, {id: 1, name: 'New item'}];