反応で私は次のように小道具を任意に渡すことができます:
function SomeComponent(props) {
const {takeOutProp, ...restOfProps} = props;
return <div {...restOfProps}/>;
}
Angularでどうすれば同じことができますか?
-
より具体的には、カスタムドロップダウンコンポーネントを作成し、小道具を選択ボックスに渡します。
Reactコンポーネントとは異なり、Angularコンポーネントは入力の変更時に再コンパイルされず、@Input
プロパティデコレータで変更検出を有効にします。渡されることが予想されるすべてのプロパティは、コンポーネント入力として明示的に定義する必要があります。
カスタム選択コンポーネントには、これより優れたオプションはありません。現在のコンポーネント要素から静的attributesを読み取り、ネストされたコンポーネント要素に設定することは可能ですが、これはバインディングを設定しません。
Reactラップされたコンポーネントのディーププロップのレシピ:
const Baz = props => <p>{props.baz}</p>;
const Bar = props => <Baz {...props} />;
const Foo = props => <Bar {...props} />;
これは通常、Angular DIとインジェクターの階層によって処理されます。ネストされたコンポーネントでデータと動作を利用できるようにするために、プロバイダーをそれぞれのインジェクターで定義できます。
実際、それはあなたの質問に対する答えではありませんが、おそらくあなたを助けるでしょう。必要なすべてのパラメーターを含む1つのカスタムディレクティブを追加できます。
import { Directive, ElementRef } from '@angular/core';
@Directive({
selector: '[defaultConfig]'
})
export class DefaultDropdownConfigDirective {
constructor(el: ElementRef) {
el.nativeElement.style.backgroundColor = 'yellow';
// your default config
}
}
<my-dropdown defaultConfig></my-dropdown>
詳細については、 this を参照してください。