2016-11-18 5 views
0

Можно ли передать простую строку из шаблона компонента в другой компонент? например ..Передача строки в компонент из другого компонента tpl в angular2

Компонент 1 TPL:

<survey-step-complete-msg [messageType]="'completed-survey'"></survey-step-complete-msg> 

Компонент 2 .ts

import {Component, Input} from '@angular/core'; 
@Component({ 
    selector: 'survey-step-complete-msg', 
    templateUrl: '../../../../public/template/topic/survey-step-complete-msg.html' 
}) 
export class SurveyStepCompleteMsgComponent { 
    @Input() messageType; 
    constructor(){ 
     console.log(this.messageType); 
    } 
} 

Компонент 2 TPL:

<div [ngSwitch]="messageType"> 

    <p *ngSwitchCase="completed-survey">Thanks</p> 
    <p *ngSwitchCase="survey-step-required-fields-missing">Stuff missing</p> 
    <p *ngSwitchCase="survey-required-fields-missing">Stuff missing</p> 
    <p *ngSwitchCase="survey-thanks-now-save">Thanks, don't forget to save.</p> 

</div> 

Текущий результат находится в компоненте Т.С. @ вход всегда не определен.

ответ

0

Это не определено в конструкторе, потому что его еще нет. Поместите этот console.log в метод ngOnInit(). Там должно быть видно.

также разметка:

*ngSwitchCase="expression" 

завершены-опрос не является выражением. попробуйте:

<p *ngSwitchCase="'completed-survey'">Thanks</p> 
1

Оберните свои операторы switchcase в кавычки.

<p *ngSwitchCase="'completed-survey'">Thanks</p> 
0

У меня была эта точная проблема на ранней стадии. Вам нужно сделать: messageType = «завершен-опрос» вместо [messageType] = «« завершен-опрос »»

+0

ahh хорошо ладно! спасибо за комплект! Так много нового sytax .. все еще пытаясь втиснуть все это в: D – John

+0

на самом деле ... оказалось, что это было просто двойное закрытие строки в коммутаторе, который отсутствовал – John

+0

рад, что вы его решили. –

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