2016-06-03 13 views
1

У меня есть вопрос о связывании двухстороннего в Angular2Двусторонний связывания в угловом 2

Я просмотрел много примеров, как использовать его с полями вводом и так далее. Но я хотел попробовать в моем случае: у меня есть два компонента, один из которых является общим (многоразовым) компонентом. У другой есть своя модель.

Могу ли я передать модель основного компонента многоразовому и использовать двустороннюю привязку?

<day [(currentDay)]="model.currentDay"></day> 

Мои вопросы:

1) Могу ли я сделать это? Правильно ли это, или лучше использовать eventEmitter?

2) Это, как я храню модель в главном компоненте:

model: DayModel = new DayModel(null, null); 

и в том, что модель в этой многоразовой компоненте:

@Input() currentDay: DayModel; 

Когда я пытаюсь использовать его в многоразовом компонент и получить доступ к currentDay, у меня есть такая проблема: «Невозможно установить свойство» #someProperty «undefined» (currentDay не определено) и вот почему мне нужно:

@Input() currentDay: DayOfWeekModel = new DayOfWeekModel(... properties ...); 

Как этого избежать?

Спасибо заранее!

ответ

1

Фактически, используя только @Input, вы выполняете половину задания ;-) Только один способ привязки.

В вашем случае, вы также нужно @output со стандартным именем:

@Output() currentDayChange: EventEmitter<DayModel> = new EventEmitter(); 

Чтобы вызвать родительский компонент, что есть обновление, используйте:

this.currentDayChange.emit(newValue); 

Выражения [(...]) ярлык для [...] плюс (...):

<day [currentDay]="model.currentDay" 
    (currentDayChange)="model.currentDay = $event"></day> 

Итак, вам нужно реализовать оба ...

+0

Другим способом Я не могу использовать одну переменную @Input() для двусторонней привязки? – weratius

+0

Вы можете использовать его, но вам нужно работать по ссылке. Никакое примитивное значение (строка, число) не будет поддерживаться ... Подход, который я описал, вы работаете во всех случаях ;-) –

+0

ok, thx. Я думал, что могу использовать его так же, как [()] =) – weratius

Смежные вопросы