2017-03-29 9 views
0

私はAngularを初めて使っていて、JavaScriptの問題を抱えているようですが、あまりエレガントではありません。HTML要素からのAngular2関数呼び出し、ロードイベントなし(または類似)

私は配列プロパティを持つモデルを持っています。私はいくつかのHTML選択オプションを構築するためにリストプロパティを使用します。これはすべてうまく動作しています。この問題は、デフォルト値を設定しようとしているときに発生します.HTML要素にはロードイベントがありません。

私は数多くのHTML要素を試しましたが、どちらもロードイベントを表示していないようですが、間違っている可能性があります。

HTMLの直後にjavascriptタグを挿入する方法がありましたが、私はそれを行うことができましたが、私はAngularでよりエレガントな方法を探していました。

私はこのSO postを見ましたが、それは私の答えだと思っていましたが、私はそれに同意しているので、良い解決策ではないようです。 は関係なく、私はそれがうまくいく場合だけ見るためにそれを試してみましたが、私が得た:

が「要素」オン「のsetAttribute」を実行に失敗しました:「{{loadDefaults()}}」

<span {{loadDefaults()}} ></span> 
有効な属性名ではありません

コンポーネントでAS2関数を起動してデフォルト値をロードするにはどうすればよいですか?

HTML(無bodyタグはありませんので、ところで、これは完全なページロードではありません):

<tr> 
    <td *ngFor="let loc of locOptions;"> 
     <span>{{loc.text}}</span> 
     <input type="radio" name="radiogroup" [value]="loc.value" (change)="onSelectionChange(loc.value)"> 
    </td> 
</tr> 

編集

は、私はおそらく間違っngoninitがあまりにも早く解雇だろうと思いました.. html要素がレンダリングされる前に。

おそらく提案されているのは、ブール値がモデルにデフォルトで追加され、要素がレンダリングされるときにTHATをバインドするということです。

+0

あなたはAS2とはどういう意味ですか? ActionScript? – YounesM

+0

'locOptions'をデフォルト値で初期化したいだけですか? – Yogesh

答えて

1

あなたはあなたのデータを初期化、およびコンポーネントからデータを取得呼び出すためにngOnInitを使用する必要があります。

defaults : any; 

ngOnInit { 
    this.defaults = loadDefaults(); 
} 

loadDefaults() { 
    //get data 
} 

HTML:

<span>{{defaults}}</span> 
+1

ただ一つの事を追加したい。コンポーネントは 'class MyComponentがOnInit {}'を実装するような 'OnInit'インタフェースを実装する必要があります。 – Yogesh

+0

私はOPでこれを言及していたはずです...私の編集を見てください。 – GPGVM

+1

html要素がレンダリングされた後、 'ngOnInit'が呼び出されます(1回のみ):https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html#!#hooks-purpose-timing – YounesM

3

ngonit関数でthis.locOptionsをデフォルト値に設定します。値は後でどの機能でも変更することができ、その変更はビューに反映されます。これがあなたを助けることを願ってください。

関連する問題