2015-12-16 17 views
5

Vấn đề lớn nhất của tôi với Angular 1 là khó khăn như thế nào để mở rộng (theo ý nghĩa hướng đối tượng) một chỉ thị.Các chỉ thị Angular 2 bây giờ có "mở rộng" được không?

Ví dụ: gần như không thể sử dụng lại chỉ thị input[number] trên tiện ích tùy chỉnh của tôi và tôi phải triển khai lại tất cả mã chuyển đổi xác thực và loại chuyển đổi.

Thành phần góc 2 được triển khai dưới dạng các lớp để có vẻ như chúng có thể dễ dàng mở rộng. Tuy nhiên, họ cũng có chú thích @Component với bộ chọn rất cụ thể, v.v., điều này khiến tôi không rõ ràng nếu những người đó có thể bị ghi đè hoàn toàn.

Vậy các chỉ thị Angular 2 có thực sự mở rộng được không?

Chỉnh sửa:

Được rồi, "có thể mở rộng" không phải mở rộng lớp học. Nó có thể tạo ra một chỉ thị mới bao gồm nhiều chỉ thị hiện có. Câu hỏi của tôi với phương pháp này là cơ chế áp dụng các chỉ thị của trẻ là gì?

(The @Component lớp không phải là lớp OO truyền thống với phương pháp mà người ta có thể cử cho trẻ em. Nó chỉ là một container các lĩnh vực và trở lui được hoàn toàn điều khiển bởi bất cứ điều gì là đằng sau những chú thích.)

Trả lời

5

Chú thích là không thừa hưởng, vì vậy nếu bạn có:

@Directive({ 
    selector:'foo', 
    inputs:['bar'] 
}) 
export class Foo {} 


//no annotation 
export class FooBar extends Foo {} //not a directive 


@Directive({ 
    selector:'foobaz' 
}) 
export class FooBaz extends Foo {} //is a directive, but has no inputs 

FooBar sẽ không được công nhận là một chỉ thị nào cả, và FooBaz sẽ nhưng nó sẽ không phải là bar đầu vào (hoặc bất kỳ người khác). Vì vậy, nếu thừa kế là thực sự điều gì có ý nghĩa nhất đối với trường hợp sử dụng của bạn, cách tiếp cận này sẽ là khai báo đầu vào v.v. trong chú thích lớp con và chuyển chúng làm đối số hàm dựng cho lớp cha, bạn có thể đóng gói chức năng chung.

Điều đó nói rằng, tôi không nghĩ rằng khả năng mở rộng nhất thiết phải thừa kế, và trong kinh nghiệm của tôi câu ngạn ngữ cũ "thành phần ưu tiên thừa kế" là gấp đôi đúng khi DI tham gia.

Ai đó thông minh hơn tôi vừa nói, "thừa kế sẽ giết con bạn trong giấc ngủ", và tôi có xu hướng tuân theo quan điểm đó trừ khi tôi chắc chắn đó là công cụ thích hợp cho trường hợp sử dụng của tôi.

+1

Xin chào, tôi hoàn toàn đồng ý với bạn về "thành phần ưu tiên hơn thừa kế", nhưng nó không đơn giản với các thành phần góc. Xem chỉnh sửa của tôi ở trên. –

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