2016-01-15 26 views
7

Các đối tượng ngày được sửa đổi bằng cách sử dụng phương thức setDate không được cập nhật trong mẫu.Làm thế nào để phát hiện các thay đổi với các đối tượng Date trong Angular2?

Trong mẫu:

<p>{{date | date:'mediumDate'}}</p> 

Trong thành phần:

nextDay(){ 
    this.date.setDate(this.date.getDate()+1); 
    } 

Nhưng khi tôi gọi nextDay chức năng, mẫu isnt cập nhật với các giá trị mới.

Cách duy nhất tôi có thể có được sự phát hiện sự thay đổi làm việc đã làm điều này:

nextDay(){ 
    var tomorrow = new Date(); 
    tomorrow.setDate(this.date.getDate()+1); 
    this.date = tomorrow; 
    } 

Có một cách tốt hơn để hoàn thành nhiệm vụ này giống nhau không?

+2

Ống 'ngày' có thể là không có quốc tịch, vì vậy cần phải xem thay đổi thuộc tính đầu vào' ngày' hoặc đường ống sẽ không thực thi lại. Khi @jhadesdev đề cập đến câu trả lời của anh ta, vì 'date' là một đối tượng, và Angular chỉ kiểm tra tham chiếu, bạn cần đặt lại tham chiếu (đối tượng mới/khác). –

+1

Tôi đã cho nó một shot mà không có đường ống vừa nãy, và kết quả tương tự của nó. Nếu bạn thay đổi ngày sẽ không kích hoạt mẫu thay đổi, chỉ thay đổi tham chiếu sẽ kích hoạt mẫu thay đổi –

Trả lời

5

Tôi nghĩ đó là đúng cách, để thay đổi tham chiếu của biến ngày tháng. Từ tài liệu here, chúng tôi có:

Thuật toán phát hiện thay đổi mặc định tìm kiếm sự khác biệt bằng cách chạy các phát hiện thay đổi.

Vì vậy, nếu tham chiếu ngày vẫn giữ nguyên, sẽ không có gì xảy ra. Bạn cần một tham chiếu ngày mới và đó là lý do tại sao phiên bản thứ hai của nextDay() hoạt động.

Nếu bạn loại bỏ các đường ống định dạng, bạn sẽ thấy rằng vẫn chỉ có phiên bản thứ hai của nextDay() hoạt động.

+0

fyi, liên kết tới tài liệu bị hỏng –

Các vấn đề liên quan