[解決済み] Angular 2 コンポーネントの@Inputが機能しない
2023-07-07 14:58:11
質問
私は、自分のコンポーネントにプロパティ値を渡そうとして行き詰っています。私が読んだものから、すべてが正しく見えます。しかし、それはまだ動作していません。私のテスト値は、画面とコンソールにnullとして出力されます:(
これは私のテストコンポーネントです。
import {Component, Input} from 'angular2/angular2';
@Component({
selector: 'TestCmp',
template: `Test Value : {{test}}`
})
export class TestCmp {
@Input() test: string;
constructor()
{
console.log('This if the value for user-id: ' + this.test);
}
}
このように、親ページからコンポーネントを呼び出しています。
<TestCmp [test]='Blue32'></TestCmp>
ページがレンダリングされるとき、テスト値は空です。テスト値:」としか表示されません。
Test Value : Blue32'ではなく、'Test Value : Blue32'と表示されます。
どのように解決するのですか?
私が注意できることは4つあります。
- ルートコンポーネントで入力を渡していますが、これはうまくいきません。
- alexpodsさんがおっしゃるように、CamelCaseを使っていますね。使ってはいけません。
-
を通して文字列の代わりに式を渡している。
[test]
. これはつまり、angular2 がBlue32
という名前の変数を探していることを意味します。 - コンストラクタを使用しています。それはうまくいきません。 ビューが初期化された後でなければなりません。 データバインドプロパティが初期化された後でなければなりません (詳しくは OnInit ).
というわけで、いくつかの修正でうまくいくはずです。
ベータ 1 に更新された例
import {Component, Input} from 'angular2/core';
import {bootstrap} from 'angular2/platform/browser';
@Component({
selector : 'childcmp',
template: `Test Value : {{test}}`
})
class ChildCmp {
@Input() test: string;
ngOnInit() {
console.log('This if the value for user-id: ' + this.test);
}
}
@Component({
selector: 'testcmp',
template : `<childcmp [test]="'Blue32'"></childcmp>`
directives : [ChildCmp]
})
export class TestCmp {}
bootstrap(TestCmp);
これを見る plnkr を例として見てください。
更新情報
まだこの回答が届いていないようなので、plnkrをベータ1に更新し、説明の1点を修正しました:ngAfterViewInitでは入力にアクセスできますが、ngOnInitではライフサイクルの早い段階でアクセスすることができます。
関連
-
[解決済み] Angular 2の@ViewChildアノテーションがundefinedを返す
-
[解決済み] Angular 2の「コンポーネント」は既知の要素ではありません。
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] URLを新しいタブで開く(新しいウィンドウではない)
-
[解決済み] jQueryで入力を無効化/有効化する?
-
[解決済み] ngModel' は 'input' の既知のプロパティではないため、バインドできません。
-
[解決済み] Angular HTMLバインディング
-
[解決済み] モジュール "@angular-devkit/build-angular" が見つかりませんでした。
-
[解決済み】vuejs 子コンポーネントから親データを更新する
-
[解決済み] Angular2:コンポーネントをレンダリングする前にデータをロードする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] 文字列とラベルのローカライズとグローバリゼーションのベストプラクティス【終了しました
-
[解決済み] JavaScriptのArray.sort()メソッドでシャッフルするのは正しいのか?