如何使用启动禁用但必须启动启用的组件?

How to use a component which starts disable but has to start enable?

我的应用程序中有一个自动完成组件开始禁用。这是一个在我的应用程序中很多地方调用的组件。

组件自动完成

 ngOnInit() {
    this.internalForm = this.formBuilder.group({
      value: [null]
    });
    this.internalForm.get('value').disable();   }

这次需要启动组件使能

我已经试过了:

另一个组件

ngOnInit() {
    this.carregarDropDowns();
    this.form.get('cboControl').enable();
}

但是不行。

您可以在第一个组件中使用 @Input 属性 并根据输入选项值禁用自动完成功能。例如

@Component({
   selector: 'auto-complete',
   templateUrl: 'auto-complete.component.html'
})
export class AutoCompleteComponent {
  @Input() enabled: boolean;

  ngOnInit() {
    this.internalForm = this.formBuilder.group({
      value: [null]
    });

    if (!this.enabled) {
        this.internalForm.get('value').disable();
    }
}

然后您可以在需要启用它时将启用标志传递给它。

<auto-complete enabled="true"></auto-complete>

编辑: 更改代码示例以避免按照评论中的要求更改旧代码

我假设我正确理解你的问题,但你可以简单地使用 @Input 来解决你的问题:

autocomplete.component.ts

export class AutoCompleteComponent {
    @Input() disable = true;    
    ...

    ngOnInit() {
        this.internalForm = this.formBuilder.group({
            value: [null]
        });
        if (this.disable) {
            this.internalForm.get('value').disable();   
        }
    }
}

在你的其他组件中只需:

<auto-complete-component [disable]="false" ...></auto-complete-component>