Saya memiliki pengamat panggilan aplikasi, terdiri dari komponen/layanan. Saya memiliki tabel sederhana yang terlihat kosong dengan benar

    <table mat-table [dataSource]="this.getWatcherTable()" class="mat-elevation-z8">
  
        ... my columns and rows are described here

    </table>

Sumbernya ditautkan ke file komponen saya

export class WatcherComponent{

    constructor(public watcherService : WatcherService ) {}

    getWatcherTable(){
        return this.watcherService.watcherTable;
    }
}

Itu sendiri ditautkan ke file layanan

export class WatcherService {
    watcherTable : Array<Watcher> = new Array();

    updateWatchers(name,value){
        this.watcherTable.push({name:name, value:value});
    }
}

Pembaruan dipicu oleh aplikasi lain dan berfungsi dengan baik, log konsol dari larik memiliki pembaruan, tetapi larik masih ditampilkan kosong

0
Foxhunt 12 Mei 2021, 22:54

1 menjawab

Jawaban Terbaik

Setiap kali Anda memperbarui array, Anda harus membuat yang baru sehingga deteksi perubahan sudut akan memperbarui komponen secara otomatis. Jadi sebagai gantinya:

export class WatcherService {
    watcherTable : Array<Watcher> = new Array();

    updateWatchers(name,value){
        this.watcherTable.push({name:name, value:value});
    }
}

Kamu harus punya:

export class WatcherService {
    watcherTable : Array<Watcher> = new Array();

    updateWatchers(name,value){
        this.watcherTable = this.watcherTable.concat([{name:name, value:value}]);
    }
}
1
Dariusz Ostolski 12 Mei 2021, 20:23