電子&ノードを使用して角度2のアプリケーションを作成しています。サーバー上で実行されるテストがあり、結果はtestResultsというグローバル変数配列に1つずつ出力されます。しかし、私は、オブジェクトが配列に追加されたときにイベントをトリガーする角度になっ運を持っていない角型2のグローバルサーバー側変数の変更を見る方法
declare var testResults: any;
:私が使用して角度にそれを引っ張って何の問題もありません。この配列の変更を監視する方法はありますか?私はonChangesとdoCheckを試したが運がなかった。
これは私が私のコンポーネントを持っているものです。
import {Component, Input, OnChanges, SimpleChange, OnInit} from 'angular2/core';
declare var testResults: any;
@Component({
selector: 'test-results',
template: `{{ testResultsItem }}
`,
})
export class TestResultsComponent implements OnChanges{
@Input() testResultsItem = testResults;
ngOnChanges(changes: {[ propName: string]: SimpleChange}) {
console.log('Change detected:', changes[this.testResultsItem].currentValue);
console.log(this.testResultsItem);
}
}
私はすべてが第二私はコンソールの配列の変更を参照していますコンソールでその配列をログに記録するsetIntervalを実行すると。また、{{testResults}}のDOM内で更新されます。しかし、角度がsetIntervalを実行するのではなく、この変更を検出する方法が必要ですか?どんな助けもありがとう!私が使用してIterableDiffersしようとしたときにここで
です:あなたがあなたのtempalteを変更した場合
import {Component, Input, OnChanges, SimpleChange, OnInit, IterableDiffers, ChangeDetectorRef, IterableDiffer, Directive, DoCheck} from 'angular2/core';
declare var testResults: any;
@Component({
selector: 'test-results',
template: `{{ testResultsItem | json }}
`,
inputs: ['testResults']
})
export class TestResultsComponent implements DoCheck{
private testResultsItem = testResults;
private differ:IterableDiffer;
constructor(private changeDetector:ChangeDetectorRef, private differs:IterableDiffers) {
this.differ = differs.find([]).create(null);
}
set testReults(test:any) {
this.testResultsItem = test;
if (test && !this.differ) {
this.differ = this.differs.find(test).create(this.changeDetector);
}
}
ngDoCheck(){
if (this.differ) {
const changes = this.differ.diff(this.testResultsItem);
if (changes) {
console.log('FIRE!');
}
}
}
}
角度変化を検出する必要がありますまたはアレイ。オブジェクト参照がチェックされているかどうかをチェックするだけです。 'IterableDiffer'を使って' ngDoCheck'の変更をチェックすることができます。あなたが試したことを示すコードを投稿してください。 'testResults'を変更するコードはどこですか? –
testResultsは、インデックスにリンクされているmain.jsファイルで作成されます。そこから、配列内のオブジェクトを返すreporter.jsというjsファイルへの呼び出しがあります。 IterableDifferで実装しようとしました。残念ながら、まだ起動できません。上記のコードを元の投稿に追加しました。 – kahls