2017-07-21 13 views
0

私は静的なjsonファイルから取得するデータからブートストラップを作成しようとしていますコンポーネントinitでロードしています。タブの場合は、tabpanelのランダムidとtablistのhref属性を生成する必要があります。ランダムなID属性を生成してExpressionChangedAfterItHasBeenCheckedErrorを発生させます

私は結果WORKSとして取得するが、私は、コンソールでこのエラーを参照してください行います

ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'j5e0vxl5-lua'. Current value: 'j5e0vxlz-5xl'. 
at viewDebugError (core.es5.js:8418) 
at expressionChangedAfterItHasBeenCheckedError (core.es5.js:8396) 
at checkBindingNoChanges (core.es5.js:8560) 
at checkNoChangesNodeInline (core.es5.js:12421) 
at checkNoChangesNode (core.es5.js:12395) 
at debugCheckNoChangesNode (core.es5.js:13172) 
at debugCheckRenderNodeFn (core.es5.js:13112) 
at Object.eval [as updateRenderer] (WorkflowComponent.html:116) 
at Object.debugUpdateRenderer [as updateRenderer] (core.es5.js:13094) 
at checkNoChangesView (core.es5.js:12217) 

WorkflowComponent.html

<div class="col-sm-12" [attr.random]="randomText(true)"> 
    <!-- Nav tabs --> 
    <ul class="nav nav-tabs" role="tablist"> 
     <li role="presentation"> 
      <a [attr.href]="'#random-'+randomText()" [attr.aria-controls]="'random-'+randomText()" role="tab" data-toggle="tab"> 
       <strong>Tab name</strong> 
      </a> 
     </li> 
    </ul> 

    <!-- Tab panes --> 
    <div class="tab-content"> 
     <div role="tabpanel" class="tab-pane" [attr.id]="'random-'+randomText()"> 
      <div> 
       <p>Tab content</p> 
      </div> 
     </div> 
    </div> 
</div> 

workflow.components.ts randomText方法

randomText(generateRndmText = false) { 
    if (generateRndmText) { 
     this._rndmText = (Math.random() + (+new Date)).toString(36).replace('.', '-'); 
    } 
    console.log('RANDOM: ' + this._rndmText); 
    return this._rndmText; 
} 
+0

[Expression \ _ \ _ \ _の可能な複製がチェックされた後に変更されました](https://stackoverflow.com/questions/34364880/expression-has-changed-after-it-was-checked) – Alex

+0

Donそうしないでください。角度のある文書を読みましたか? – yurzui

+0

私はこのプロジェクトに飛びつき、私は読書と教育を並行してやっています。 私はこれについて間違っていると確信していますが、誰かがそれをクリアすることができれば、とても感謝しています。 少なくとも、私がそれについてもっと学ぶことができるドキュメントを教えてください。 – Vedran

答えて

0

ありがとうございます@Maximusのリンクです。それがなぜ起こっているのか理解する助けとなりました。

私はデザインを変更し、ngからインデックスを使用しました。これはラップされています。これはうまくいきます。

ダイジェストの進行中に値が変更されるようなメソッドを実装する方法があるのであれば、私はまだ興味があります。 変更された変数のデータは必要ありません。その目的は、DOMオブジェクトへの参照を与えることです。私が心配している限り、ダイジェストが完了したらそれは未定義になることがあります。

関連する問題