Angular 2コンポーネントのプロパティのデフォルト値を設定するにはどうすればよいですか?

ブライアンレイナー:

Angular 2.0コンポーネントを作成するとき、プロパティのデフォルト値をどのように設定しますか?

たとえば、デフォルトでに設定fooたいの'bar'ですが、バインディングがすぐにに解決される場合があります'baz'これはライフサイクルフックでどのように機能しますか?

@Component({  
    selector: 'foo-component'
})
export class FooComponent {
    @Input()
    foo: string = 'bar';

    @Input()
    zalgo: string;

    ngOnChanges(changes){
          console.log(this.foo);
          console.log(changes.foo ? changes.foo.previousValue : undefined);
          console.log(changes.foo ? changes.foo.currentValue : undefined);
    }
}

以下のテンプレートを考えると、これが私が期待する値です。私が間違っている?

<foo-component [foo] = 'baz'></foo-component>

コンソールに記録:

'baz'
'bar'
'baz'
<foo-component [zalgo] = 'released'></foo-component>

コンソールに記録:

'bar'
undefined
undefined
Mikki :

それは興味深いテーマです。あなたはそれがどのように動作するかを理解するために、2つのライフサイクルフックで遊ぶことができますngOnChangesngOnInit

基本的にデフォルト値を設定Inputすると、そのコンポーネントに値がない場合にのみ使用されます。そして、興味深い部分は、コンポーネントが初期化される前に変更されます。

2つのライフサイクルフックとからの1つのプロパティを持つコンポーネントがあるとしますinput

@Component({
  selector: 'cmp',
})
export class Login implements OnChanges, OnInit {
  @Input() property: string = 'default';

  ngOnChanges(changes) {
    console.log('Changed', changes.property.currentValue, changes.property.previousValue);
  }

  ngOnInit() {
    console.log('Init', this.property);
  }

}

状況1

定義されたpropertyなしでHTMLに含まれるコンポーネント

その結果、コンソールに次のように表示されます。 Init default

つまり、onChangeトリガーされなかったということです。初期化がトリガーされ、property値はdefault期待どおりです。

状況2

プロパティが設定されたHTMLに含まれるコンポーネント <cmp [property]="'new value'"></cmp>

その結果、コンソールに次のように表示されます。

Changed new value Object {}

Init new value

そして、これは面白いです。まず、トリガされたonChangesettedフック、propertyにしnew valueて、前の値となった空のオブジェクトそして、そのonInitフックがの新しい値でトリガーされた後にのみproperty

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プログラムでAngular 2フォームコントロールをダーティに設定するにはどうすればよいですか?

分類Dev

Angular6でリアクティブフォームコントロールに値を設定するにはどうすればよいですか?

分類Dev

AngularのコンポーネントのテンプレートにHTMLファイルをロードするにはどうすればよいですか?

分類Dev

ngForループにAngularのネストされたコンポーネントを設定するにはどうすればよいですか?

分類Dev

Angularコンポーネントでオプションの選択されたフラグを設定するにはどうすればよいですか?

分類Dev

Angular 2:親コンポーネントから子コンポーネントにフィールドのデフォルト値を設定する方法は?

分類Dev

Angular2で兄弟コンポーネントのスタイルを設定するにはどうすればよいですか?

分類Dev

別のディレクティブをラップする再利用可能なコンポーネントAngularディレクティブで、モデルを「パススルー」するにはどうすればよいですか?

分類Dev

Angular 11 / TS 4のプロパティのデフォルト値を適切に使用するにはどうすればよいですか?

分類Dev

ネストされたAngularコンポーネントのスタイルを設定するにはどうすればよいですか?

分類Dev

テンプレートのプロパティバインディングに使用できるように、Angular 2でグローバル変数を定義するにはどうすればよいですか?

分類Dev

Angularの子ルートコンポーネントから親コンポーネントのプロパティにアクセスするにはどうすればよいですか?

分類Dev

AngularでcanDeactivateGuardに渡された汎用コンポーネントプロパティを取得するにはどうすればよいですか?

分類Dev

Angularですべて(!)の最も近いディレクティブ/コンポーネントを取得するにはどうすればよいですか?

分類Dev

複数のAngular 2プロジェクト間でAngular 2コンポーネントを共有するにはどうすればよいですか?

分類Dev

Angular 7でコンポーネントのCSSファイルコンテンツを取得するにはどうすればよいですか?

分類Dev

Angular2で@Inputのデフォルトパラメータを設定するにはどうすればよいですか?

分類Dev

Angular 2コンポーネントのhtmlテンプレートを取得するにはどうすればよいですか?

分類Dev

動的コンポーネントが画面に表示されているかどうかを確認し、Angular8でそのプロパティにアクセスするにはどうすればよいですか?

分類Dev

別のコンポーネントを介してプロパティを更新した後、コンポーネントをトリガーしてAngular 2でレンダリングするにはどうすればよいですか?ngZone.run()が機能していません

分類Dev

Angular 5:1つのルートのみを使用して、コンセントのすべてのパスを同じコンポーネントにルーティングするにはどうすればよいですか?

分類Dev

最初のコンポーネントを表示せずにコンポーネントを別のコンポーネントにルーティングするにはどうすればよいですか?-Angular

分類Dev

複雑なオブジェクトのAngular編集コンポーネントをサポートするようにSpringモデルを設定するにはどうすればよいですか?

分類Dev

Angular2 +兄弟コンポーネントのmouseleaveイベントによってトグルディレクティブをトリガーするにはどうすればよいですか?

分類Dev

Angular 2アプリでデフォルトのファビコンアイコンを変更するにはどうすればよいですか?

分類Dev

Angularで特定のコンポーネントの背景を設定するにはどうすればよいですか?

分類Dev

Angular2の別のコンポーネントの中にコンポーネントを配置するにはどうすればよいですか?

分類Dev

Angular2の別のコンポーネントの中にコンポーネントを配置するにはどうすればよいですか?

分類Dev

Angular2の別のコンポーネントの中にコンポーネントを配置するにはどうすればよいですか?

Related 関連記事

  1. 1

    プログラムでAngular 2フォームコントロールをダーティに設定するにはどうすればよいですか?

  2. 2

    Angular6でリアクティブフォームコントロールに値を設定するにはどうすればよいですか?

  3. 3

    AngularのコンポーネントのテンプレートにHTMLファイルをロードするにはどうすればよいですか?

  4. 4

    ngForループにAngularのネストされたコンポーネントを設定するにはどうすればよいですか?

  5. 5

    Angularコンポーネントでオプションの選択されたフラグを設定するにはどうすればよいですか?

  6. 6

    Angular 2:親コンポーネントから子コンポーネントにフィールドのデフォルト値を設定する方法は?

  7. 7

    Angular2で兄弟コンポーネントのスタイルを設定するにはどうすればよいですか?

  8. 8

    別のディレクティブをラップする再利用可能なコンポーネントAngularディレクティブで、モデルを「パススルー」するにはどうすればよいですか?

  9. 9

    Angular 11 / TS 4のプロパティのデフォルト値を適切に使用するにはどうすればよいですか?

  10. 10

    ネストされたAngularコンポーネントのスタイルを設定するにはどうすればよいですか?

  11. 11

    テンプレートのプロパティバインディングに使用できるように、Angular 2でグローバル変数を定義するにはどうすればよいですか?

  12. 12

    Angularの子ルートコンポーネントから親コンポーネントのプロパティにアクセスするにはどうすればよいですか?

  13. 13

    AngularでcanDeactivateGuardに渡された汎用コンポーネントプロパティを取得するにはどうすればよいですか?

  14. 14

    Angularですべて(!)の最も近いディレクティブ/コンポーネントを取得するにはどうすればよいですか?

  15. 15

    複数のAngular 2プロジェクト間でAngular 2コンポーネントを共有するにはどうすればよいですか?

  16. 16

    Angular 7でコンポーネントのCSSファイルコンテンツを取得するにはどうすればよいですか?

  17. 17

    Angular2で@Inputのデフォルトパラメータを設定するにはどうすればよいですか?

  18. 18

    Angular 2コンポーネントのhtmlテンプレートを取得するにはどうすればよいですか?

  19. 19

    動的コンポーネントが画面に表示されているかどうかを確認し、Angular8でそのプロパティにアクセスするにはどうすればよいですか?

  20. 20

    別のコンポーネントを介してプロパティを更新した後、コンポーネントをトリガーしてAngular 2でレンダリングするにはどうすればよいですか?ngZone.run()が機能していません

  21. 21

    Angular 5:1つのルートのみを使用して、コンセントのすべてのパスを同じコンポーネントにルーティングするにはどうすればよいですか?

  22. 22

    最初のコンポーネントを表示せずにコンポーネントを別のコンポーネントにルーティングするにはどうすればよいですか?-Angular

  23. 23

    複雑なオブジェクトのAngular編集コンポーネントをサポートするようにSpringモデルを設定するにはどうすればよいですか?

  24. 24

    Angular2 +兄弟コンポーネントのmouseleaveイベントによってトグルディレクティブをトリガーするにはどうすればよいですか?

  25. 25

    Angular 2アプリでデフォルトのファビコンアイコンを変更するにはどうすればよいですか?

  26. 26

    Angularで特定のコンポーネントの背景を設定するにはどうすればよいですか?

  27. 27

    Angular2の別のコンポーネントの中にコンポーネントを配置するにはどうすればよいですか?

  28. 28

    Angular2の別のコンポーネントの中にコンポーネントを配置するにはどうすればよいですか?

  29. 29

    Angular2の別のコンポーネントの中にコンポーネントを配置するにはどうすればよいですか?

ホットタグ

アーカイブ