Angular 命令を使用して関心の分離を維持する方法についての簡単な説明?

青灯夜游
リリース: 2021-09-13 10:42:21
転載
1246 人が閲覧しました

Angularディレクティブを使用して関心の分離を維持するにはどうすればよいですか?次の記事では、Angular 命令を通じて関心の分離を維持する方法を紹介します。

Angular 命令を使用して関心の分離を維持する方法についての簡単な説明?

アプリケーションに日付ピッカー コンポーネントがあるとします。ユーザーが日付を変更するたびに、イベントが分析プロバイダーに送信されます。これまでのところ、これを 1 回しか使用していないため、この分析インターフェイスをそれを使用するコンポーネントに配置できます: [関連チュートリアルの推奨事項: "angulartutorial"]

header - 1.ts

import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroyed'; @UntilDestroy() class FooComponent { timespanControl = new FormControl(); ngOnInit() { this.timespanControl.valueChanges .pipe(untilDestroyed(this)) .subscribe(({ preset }) => { this.analyticsService.track('timespan-filter apply', { value: preset, }); }); } }
ログイン後にコピー

ただし、この分析インターフェイスを使用する場所が増えたので、同じコードを繰り返し書きたくありません。このコードを日付ピッカーに組み込み、入力パラメータとして渡すことができると提案する人もいるかもしれません。

data-picker-1.component.ts

class DatePickerComponent { @Input() analyticsContext: string; constructor(private analyticsService: AnalyticsService) {} apply() { this.analyticsService.track('timespan-filter apply', { context: this.analyticsContext, value: this.preset, }); ... } }
ログイン後にコピー

実際、これは実現できますが、これは理想的な設計ではありません。関心の分離は、日付ピッカー自体は分析インターフェイスとは何の関係もなく、分析インターフェイスに関する情報を知る必要がないことを意味します。

さらに、日付ピッカーは内部コンポーネントであるため、そのソース コードを変更できますが、それがサードパーティ コンポーネントの場合はどうなるでしょうか?どうやって解決すればいいでしょうか?

ここでのより良い選択は Angular ディレクティブです。ディレクティブを作成し、DI を通じてフォームへの参照を取得し、内部値の変更をサブスクライブして分析イベントをトリガーします。datePickerAnalytics.directive.ts

@UntilDestroy() @Directive({ selector: '[datePickerAnalytics]', }) export class DatePickerAnalyticsDirective implements OnInit { @Input('datePickerAnalytics') analyticsContext: string; constructor( private dateFormControl: NgControl, private analyticsService: AnalyticsService ) {} ngOnInit() { this.dateFormControl .control.valueChanges.pipe(untilDestroyed(this)) .subscribe(({ preset }) => { this.analyticsService.track( 'timespan-filter apply', { value: preset, context: this.analyticsContext } ); }); } }
ログイン後にコピー

日付ピッカーを使用するたびにこれを使用できるようになりました。

ログイン後にコピー

プログラミング関連の知識については、プログラミング ビデオをご覧ください。 !

以上がAngular 命令を使用して関心の分離を維持する方法についての簡単な説明?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:juejin.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!