この質問を重複としてマークする前に...私はあなたが考えていることを知っています.これは数え切れないほど尋ねられていますが、正確ではありません.
私の調査中のさまざまな情報源 (公式ドキュメント、および Angular Guru とエバンジェリストを含む) から、$onInit
ブロックは一般に、angular がすべてのバインディングを終了したことに依存する初期化作業/ロジック用に予約されていることを知っています。
ただし、変数の初期化は、この「作業/ロジック」の定義に実際には適合しません。特に角度ロジックを持たない変数。そのため、変数の初期化には ES6 コンストラクターの方が適しているようです。次のように、コールバックの字句的にバインドされたスコープを必要とするメソッド バインディングについても同じことが言えます。
class myController() {
constructor() {
this.myVariableOne = 1,
this.myVariableTwo = 2,
this.myVariableThree = 3;
this.myMethod = this.myMethod.bind(this);
}
$onInit() { }
myMethod() {
console.log(this.myVariableOne, this.myVariableTwo, this.myVariableThree);
}
}
これは、ブロックを初期化作業/ロジックにのみ使用する限り、物事を行う「角度のある方法」に従うのに適しているように見えますが、Angular コントローラー クラス コンストラクターは依存性注入にのみ使用する必要が$onInit
あると言う人もたくさん見てきました。セットアップ。
だから、これは私を混乱させました。コンストラクターは、変数の初期化とメソッドのバインドに最適なブロックの$onInit
ようであり、その役割にはあまり適していないようですが、実際に何を使用すればよいかは明確ではありません。変数定義とメソッドバインディングをどこに置くべきかを誰かが理解するのを手伝ってくれますか?