2017-08-30 17 views
6

Tôi đang làm việc trên một dự án Angular (Angular 4.0.0) và tôi đang gặp khó khăn trong việc ràng buộc một thuộc tính của lớp trừu tượng với ngModel bởi vì trước tiên tôi cần đưa nó làm bê tông lớp nó thực sự là để truy cập vào tài sản.Loại truyền trong một mẫu trong Angular 2

tức là tôi có lớp AbstractEvent có sự kiện triển khai cụ thể Sự kiện có thuộc tính boolean 'được thừa nhận' mà tôi cần gắn kết hai chiều qua ngModel để đặt bằng hộp kiểm.

Tôi hiện đang có yếu tố này trong DOM của tôi:

<input type="checkbox" *ngIf="event.end" [(ngModel)]="(event as Event).acknowledged" 
              [disabled]="(event as Event).acknowledged"> 

Thật không may này là ném các lỗi sau:

Uncaught Error: Template parse errors: Parser Error: Missing expected) at column 8 in [(event as Event).acknowledged]

Googling xung quanh dường như đề nghị này có thể là do sử dụng 'như' không phải là được hỗ trợ khi sử dụng nó bên trong một mẫu? Mặc dù tôi không chắc chắn về điều này.

Tôi cũng không thể tìm ra cách viết hàm cho tệp trong tệp bản thảo của mình khi lái mẫu vì điều này sẽ phá vỡ hai cách ràng buộc trên ngModel mà tôi yêu cầu.

Nếu bất kỳ ai có bất kỳ cách nào để thực hiện việc này hoặc thực hiện truyền khuôn mẫu trong các mẫu góc chính xác, tôi sẽ rất đánh giá cao!

Trả lời

7

Điều đó là không thể vì không thể tham chiếu Event từ bên trong mẫu.

(as cũng không được hỗ trợ trong các biểu thức ràng buộc mẫu) Bạn cần phải làm cho nó có sẵn đầu tiên:

class MyComponent { 
    EventType = Event; 

thì đây nên làm việc

[(ngModel)]="(event as EventType).acknowledged" 

cập nhật

class MyComponent { 
    asEvent(val) : Event { return val; } 

sau đó sử dụng nó như

[(ngModel)]="asEvent(event).acknowledged" 
+0

Cám ơn bài trả lời nhanh nhưng tôi vẫn dường như nhận được lỗi tương tự: "của router Lỗi: Mẫu phân tích lỗi: Parser Lỗi: Thiếu dự kiến) tại cột 8 trong [(sự kiện như EventType) .được ghi nhận] " – Plog

+0

Tôi đã cập nhật câu trả lời của mình. Nó có thể có một hiệu ứng đáng chú ý về hiệu suất, bởi vì các hàm liên kết trong các khuôn mẫu được gọi khá thường xuyên. Tôi sẽ cố gắng tránh sử dụng nó nếu không cần thiết. Bạn có nhận được lỗi mà không cần truyền không? –

+2

Cảm ơn rất nhiều điều đã làm cho nó hoạt động. Và yeah Im không quá lo lắng về hiệu suất. Hiện đang làm việc trên một loại dự án nguyên mẫu được viết bởi một đồng nghiệp của tôi. Trong tương lai tôi có lẽ sẽ cố gắng tránh loại thiết kế này đòi hỏi phải đúc. Cảm ơn rất nhiều lần nữa. – Plog

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