2016-09-21 17 views
8

のindex.htmlを動作しません。どのように変数を.htmlファイルから取得してコンポーネントに送ることができますか?角度2入力は

+1

...そこだけ文字列を貼り付けることができますか? 'title'で触れたように、私はあなたの質問に入力が表示されません –

+1

ルートコンポーネント(' AppComponent')でそれをしないでください。 –

+0

下記の私の編集したコメントを読んで、私はあなたのコードがソリューション@yurzuiであってもうまく動作しない理由を説明しました。 –

答えて

11

更新

これは働いていない理由は、あなたが角度 コンポーネントではありません置く いるあなたのindex.htmlということです。このため、Angularはこの要素をコンパイルしません。そして Angularは、実行時に属性値を読み取ることはありません。 のコンパイル時にのみ、値が読み取られます。そうしないと、パフォーマンスが低下します。

https://github.com/angular/angular/issues/1858#issuecomment-151326461

これは、あなたがやりたいことになります。

index.htmlを

<app myname="some_name"></app> 

ルートコンポーネント

export class CupBuyComponent { 
    @Input() myname: String; 

    constructor(elm: ElementRef){ 
    this.myname = elm.nativeElement.getAttribute('myname'); 
    } 
} 

あなたがオブジェクトとしてデータを渡したい場合は、テキストとしてデータを渡したい場合はまた、あなたがこの質問


オリジナル

で見てみることができますそれがなければならない。

<app [myname]="'some_name'"></app> 

または

<app myname="some_name"></app> 
+0

はすべて未定義 – Rattrap

2

重要

私はあなたが結合して間違っているものを説明していますが、私は提供されたコードを使用している場合でも、あなたが通過しようとしているので、それは動作しませんブートストラップするコンポーネント(ルートコンポーネント)への入力は不可能です。あなたはmyname入力変数に文字列some_nameを渡したい場合は

、あなたは[]せずにそれをするためにする必要があります

<app myname="some_name"></app> 

あなたがやったように[]でそれを行う場合は、それがでsome_nameという名前の変数を探しますあなたのあなたが持っていないコンポーネントです。そのため、あなたはundefinedをあなたのコンソールに入れます。で、このイベントの後に

1

そのアクセス:

ngOnInit() { ... here ... }

等はすでに述べたように、あなたが、[myname]="variable or expression()"構文を使用して内側にしている場合..「」変数または式のする必要が

あなたのコンポーネント..

この構文myname="anyStringHere"を使用している場合は、myname` `の値を定義していないので、それは未定義されますので、あなたが

関連する問題