2017-02-04 18 views
0

Мне нужно вызвать функцию JQuery каждый раз, если изменилась собственная модель .изменение обнаружения угловое свойство модели 2

person = {firstName:firstName, lastName:lastName} 

в качестве примера Если я изменил ПгвЬЫат свойства человека объекта, каждый раз, когда мне нужно, чтобы вызвать функцию. На самом деле мне нужно что-то вроде подписки на свойство этого объекта.

Как это возможно?

благодарит заранее.

+0

Пожалуйста, посмотрите на мой ответ, чтобы увидеть, если это поможет вам –

ответ

0

Похоже, что вы ищете крючок жизненного цикла DoCheck (link to docs). Это событие, которое будет запущено после каждого завершенного раунда обнаружения изменений. Имейте в виду, что это потенциально может быть вызвано много, и выполнение тяжелых операций в этом крюке может оказать серьезное негативное влияние на производительность.

Вот пример, который выглядит для изменения на person.firstName собственности, и регистрирует его в консоль, если обнаружены изменения:

import { Component, DoCheck } from '@angular/core'; 

@Component({ 
    selector: 'app-root', 
    template: `<input type="text" [(ngModel)]="person.firstName">`, 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent implements DoCheck { 
    person = { firstName: 'Donald', lastName: 'Duck' }; 
    oldFirstName: string; 

    ngDoCheck() { 
    if (this.person.firstName !== this.oldFirstName) { 
     console.log(`Change first name from "${this.oldFirstName}" to "${this.person.firstName}"`); 
     this.oldFirstName = this.person.firstName; 
    } 
    } 
}