Angular2/4の "ng-reflect-*"属性は何をするのですか?
質問
Angular4アプリケーションで、複雑なデータ構造を持っています。
これは、ノードとリンクの両方で辞書をパラメータとする有向マルチグラフです。私のAngularコンポーネントは、この複雑なデータモデルで動作しています。
Angular2.4では、すべてがうまくいっていました。Angular4に切り替えてから、私はこれを私のDOMに取り込みます。
<g flareNode="" ng-reflect-model="{'id':'an-id-of-my-object'">
...これは、以下のテンプレートスニペットから生成されます。
<svg:g flareNode [model]="item"></svg:g>
注
model
はここでは単に私のコンポーネントのデータメンバです。Angular2特有の意味はありません(...ないはずです)。これは、私のアプリの背後にある複雑なデータ構造の一部です。
私の第一印象は、Angularの
をシリアライズして
model
のデータメンバをシリアライズして、その30個の最初の文字を取得し、そしてこの全く役に立たないものをDOMに置いています。
そうでしょうか?この全体の
ng-reflect-model
は、Angular2にはなかったものですが、Angular4ではどのような特定の目的を持っているのでしょうか?
どのように解決するのですか?
ng-reflect-${name}
属性はデバッグのために追加されるもので、コンポーネントやディレクティブがそのクラスで宣言している入力バインディングを表示します。ですから、あなたのコンポーネントがこのように宣言されている場合
class AComponent {
@Input() data;
@Input() model;
}
を実行すると、このようなhtmlが表示されます。
<a-component ng-reflect-data="..." ng-reflect-model="...">
...
<a-component>
これらはデバッグモード(Angularのデフォルトモード)が使用されているときのみ存在します。これらを無効にするには
import {enableProdMode} from '@angular/core';
enableProdMode();
内部
main.ts
ファイルに追加されます。これらの属性は
この機能はここで
:
function debugCheckAndUpdateNode(...): void {
const changed = (<any>checkAndUpdateNode)(view, nodeDef, argStyle, ...givenValues);
if (changed) {
const values = argStyle === ArgumentType.Dynamic ? givenValues[0] : givenValues;
if (nodeDef.flags & NodeFlags.TypeDirective) {
const bindingValues: {[key: string]: string} = {};
for (let i = 0; i < nodeDef.bindings.length; i++) {
const binding = nodeDef.bindings[i];
const value = values[i];
if (binding.flags & BindingFlags.TypeProperty) {
bindingValues[normalizeDebugBindingName(binding.nonMinifiedName !)] =
normalizeDebugBindingValue(value); <------------------
}
}
...
for (let attr in bindingValues) {
const value = bindingValues[attr];
if (value != null) {
view.renderer.setAttribute(el, attr, value); <-----------------
関連
-
[解決済み] インデックスを属性値とするngFor
-
[解決済み] Angular 2+でngShowとngHideに相当するものは何ですか?
-
[解決済み】PromiseとObservablesの違いは何ですか?
-
[解決済み] Angular2でNgForがPipeでデータを更新しない。
-
[解決済み] Angular cli - ng serve時の自動リロードを無効にする方法
-
[解決済み] Angular 2 - ルーティング - ObservableでCanActivateする。
-
[解決済み] エラー TS1192: モジュール '" A.module"' はデフォルトのエクスポートがありません。
-
[解決済み] ActivatedRoute(paramsなど)のobservableの購読を解除しなければならないのでしょうか?
-
[解決済み] Angular2 ルーターがクエリ文字列を保持する
-
[解決済み] Angular 2 コンポーネントコンストラクタとOnInitの比較 [重複]。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ng serve がファイルの変更を自動的に検出しない
-
[解決済み] Angular 2: 反応するフォームコントロールの反復処理
-
[解決済み] ルーターナビゲートで同じページのngOnInitを呼び出さない
-
[解決済み] 文字列|ヌル'型の引数は、文字列'型のパラメータに代入できません。タイプ 'null' はタイプ 'string' に割り当てられません。
-
[解決済み] プロパティ 'controls' がタイプ 'AbstractControl' に存在しない Angular 4 [duplicate] 。
-
[解決済み] 角度の2つのスイッチケース値
-
[解決済み] Angularで確認ダイアログを作る簡単な方法?
-
[解決済み] Uncaught Error: Unexpected module 'FormsModule' declared by the module 'AppModule'. Pipe/@Directive/@Component アノテーションを追加してください。
-
[解決済み] APIレスポンスからレスポンスヘッダを読み取る - Angular 5 + TypeScript
-
[解決済み] Angular 2でコンポーネントの静的変数をHTMLにバインドする方法は?