1

У меня есть это свойство в компоненте ребенка:Как передать данные от родительского к дочерним компонентам?

@Input() submitButtonDisabled: boolean; 

В шаблоне моего родительского компонента Я его через свойство связывания с использованием интерполяции:

<my-child-component 
    [submitButtonDisabled]="{{disableSubmitButton()}}"> 
</my-child-component> 

Шаблон ребенка компонент считывает его свойство submitButtonDisabled таким образом:

<button id="btSubmit" type="submit" (click)="submit()" 
    [disabled]="submitButtonDisabled">Ok</button> 

Отладка моего машинописного кода Я вижу свойство привязка работает нормально, но кнопка отправки остается отключенной независимо от того, что возвращает disableSubmitButton (логическое значение). Кажется, что компонент передается до того, как произойдет привязка.

Имеет ли это смысл? Где моя ошибка?

Ссылка: Angular 2 - Component Communication

+0

Вы отправили письмо с двумя м. Похоже, вы использовали его последовательно, но просто проверьте, нет ли у вас другой орфографии. –

+0

Вы правы. Я починил это. –

ответ

5

Если вы передаете строка буквального к вашей входной собственности, НЕ ИСПОЛЬЗУЙТЕ квадратные скобки:

<my-comp isDisabled="yes"></my-comp> 
<my-comp isDisabled="no"></my-comp> 

В этом примере входное свойство isDisabled будет содержать строку 'yes' или 'no'.

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

<my-comp [isDisabled]="true"></my-comp> 
<my-comp [isDisabled]="false"></my-comp> 
<my-comp [isDisabled]="shouldItBeDisabled()"></my-comp> 

В этом примере входного свойство isDisabled будет содержать булеву true или false, или значение, возвращаемое методом shouldItBeDisabled().

Обратите внимание, как NONE из этих сценариев использует {{ ... }}.

В вашем случае проблема может заключаться в том, что ваш метод disableSubmitButton() не возвращает правильное значение. (Кроме того, как сказал Ron537, вы должны отказаться от {{ ... }}.)

+0

DisableSubmitButton в порядке, но вы правы в фигурных скобках. Удаление было достаточно, чтобы решить проблему. –

1

Попытка удалить двойную скобку от связывания.

Вместо этого:

[submitButtonDisabled]="{{disableSubmitButton()}}" 

Используйте это:

[submitButtonDisabled]="disableSubmitButton()" 

Или это:

submitButtonDisabled="{{disableSubmitButton()}}" 
+0

Первый вариант работы: [submitButtonDisabled] = "disableSubmitButton()". Второй не работал. Связывание тезиса меня сбивает с толку. Мне нужно больше узнать об этом. –