Как использовать компонент, который начинает отключаться, но должен начать включаться?

В моем приложении есть компонент автозаполнения, который начинает отключаться. Это компонент, который часто вызывается в моем приложении.

КОМПОНЕНТ АВТОЗАПОЛНЕНИЕ

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

На этот раз мне нужно запустить компонент.

Я уже пробовал:

ДРУГОЙ КОМПОНЕНТ

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

Но это не работает.

Нужно увидеть код для this.form и this.carregarDropdowns

Avin Kavish 06.06.2019 20:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете иметь свойство @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>

Редактировать: Изменение примера кода, чтобы избежать изменения старого кода в соответствии с запросом в комментарии

Проблема в том, что я не хочу ничего менять в своем компоненте автозаполнения, потому что если я это сделаю, мне придется изменить много кода. Я ищу что-то сделать в моем компоненте.

paulotarcio 06.06.2019 20:49

Вместо этого вы можете сделать @Input включенным и передать ему значение true, если вы хотите включить автозаполнение. Таким образом, вам не придется изменять код где-либо еще, а в компоненте автозаполнения вы можете включить его на основе переданного значения, например if (!this.enabled) { // отключить автозаполнение }. Таким образом, включенный будет не определен для вашей старой реализации.

AC101 06.06.2019 21:00

Я предполагаю, что правильно понимаю вашу проблему, но вы можете просто использовать @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>

Проблема в том, что я не хочу ничего менять в своем компоненте автозаполнения, потому что если я это сделаю, мне придется изменить много кода. Я ищу что-то сделать в моем компоненте.

paulotarcio 06.06.2019 20:49

Почему у вас так много изменений в коде? Я вижу в своем подходе только изменения в 4 строчках. Если установить disabled по умолчанию на true, вам не нужно менять какие-либо компоненты, которые по умолчанию отключены.

Batajus 06.06.2019 20:51

Другие вопросы по теме