2
文字列を入力パラメータとして受け入れるコンポーネントがあります。 文字列は、私はその文字列をバインドするので、ローカライズされなければならないが、この方法です:すべてが完璧に動作します。このようにバインディングのベストプラクティス
<drawer-item [text]="getSectionName (Routes.Companies)" >...
が、私はgetSectionName関数にブレークポイントを入れて、私はこの機能がと呼ばれていることに気づきましたたくさん回。 起動時に5〜6回呼び出され、私はアプリで何かするたびに再び呼び出されます。
これは正しい動作ですか、それともパフォーマンスに危険ですか?
どうもありがとう
EDIT パイプ:パイプについては非常に良い説明がhereを見つけることができます
@Pipe({
name: 'route',
pure: false
})
export class RoutePipe implements PipeTransform {
static i:number = 0;
transform(route: Route) {
switch (route.state) {
case Routes.StartPage.state:
console.log (RoutePipe.i++);
return "H";
case Routes.Companies.state:
return "G";
case Routes.Settings.state:
return "F";
case Routes.Users.state:
return "E";
case Routes.CoursesSources.state:
return "D";
case Routes.DocumentSources.state:
return "C";
case Routes.Notifications.state:
return "B";
case Routes.NonDocumentalExpirations.state:
return "A";
default:
break;
}
}
}
EDIT。
しかし、「式」または「変数参照」があっても、その式はCDの実行時に評価されます。どのようにパフォーマンスが重要になるのでしょうか?私が何かを見逃してしまった場合。 –
2つの値の同一性を比較するのは安価ですが、呼び出し関数は高価です(HTTPリクエストと比較して何もありません)。 –
パイプを使用すると、まだ多くの時間が呼ばれています。この時点で、これはAngular2の正常な動作だと思います。 – user3471528