В моем приложении есть компонент автозаполнения, который начинает отключаться. Это компонент, который часто вызывается в моем приложении.
КОМПОНЕНТ АВТОЗАПОЛНЕНИЕ
ngOnInit() {
this.internalForm = this.formBuilder.group({
value: [null]
});
this.internalForm.get('value').disable(); }
На этот раз мне нужно запустить компонент.
Я уже пробовал:
ДРУГОЙ КОМПОНЕНТ
ngOnInit() {
this.carregarDropDowns();
this.form.get('cboControl').enable();
}
Но это не работает.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете иметь свойство @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 включенным и передать ему значение true, если вы хотите включить автозаполнение. Таким образом, вам не придется изменять код где-либо еще, а в компоненте автозаполнения вы можете включить его на основе переданного значения, например if (!this.enabled) { // отключить автозаполнение }. Таким образом, включенный будет не определен для вашей старой реализации.
Я предполагаю, что правильно понимаю вашу проблему, но вы можете просто использовать @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>
Проблема в том, что я не хочу ничего менять в своем компоненте автозаполнения, потому что если я это сделаю, мне придется изменить много кода. Я ищу что-то сделать в моем компоненте.
Почему у вас так много изменений в коде? Я вижу в своем подходе только изменения в 4 строчках. Если установить disabled по умолчанию на true, вам не нужно менять какие-либо компоненты, которые по умолчанию отключены.
Нужно увидеть код для
this.formиthis.carregarDropdowns