2017-04-03 17 views
6

Giả sử chúng tôi nhập khẩu một trong những module Chất liệu kiễu góc:Ghi đè các thành phần, như dịch vụ?

providers:[], 
imports : [MaterialInput] 

Bên MaterialInput, có một thành phần sử dụng có tên là: MaterialInputComponent

Đối với một số lý do tôi muốn ghi đè lên thành phần đó với riêng tôi

Vì vậy, Tôi muốn có thể nói:

providers:[ 
    { 
     provide: MaterialInputComponent, 
     useClass : MyOwnInputComponent 
    } 
], 
imports : [MaterialInputModule] 

Tôi biết chúng tôi có thể ghi đè dịch vụ es như vậy, nhưng nó có thể được thực hiện cho các thành phần hoặc chỉ thị không?

CẬP NHẬT: tôi không tìm kiếm phần thừa kế, những gì tôi muốn là sử dụng cái gì đó như Material Module nhưng đôi khi tôi muốn ghi đè lên một số của nó thành phần hành vi, giống như bạn làm với các dịch vụ.

Giống như:

Nếu đây là mã gốc đằng sau thành phần MaterialInput, nằm trong mô-đun nút của tôi.

@Component({}) 
    export class OriginalMaterialInputComonent{ 
     greet(){ alert('Say Aloo'); } 
    } 

Và tôi có một lớp học tương tự như:

@Component({}) 
    export class OverrideMaterialInputComonent{ 

     greet(){ alert('Say yes we can'); } // overriden function 
    } 

Và, nói rằng tôi đang nhập khẩu các MaterialInputModule lỗ

declarations:[ 
    { 
    provide: OriginalMaterialInputComonent, 
    useClass : OverrideMaterialInputComonent 
    } 
], 
    imports : [MaterialInputModule] 

Có phải đó là doable?

+0

Phiên bản nào của góc 2 bạn đang sử dụng? Thành phần thừa kế có sẵn với Angular 2.3 –

Trả lời

-1

Bạn có thể sử dụng trang trí cho rằng, Bạn có thể nhìn vào ví dụ dưới đây jsfiddle

Overriding components 

https://jsfiddle.net/mohan_rathour/sqv0jx21/

+0

Vui lòng gửi mã liên quan ở đây, thay vì một liên kết có thể chết trong tương lai –

+0

@peeskillet Mã đó được tạo ra bởi chính tôi và sẽ không chết trong tương lai –

+0

@mohanrathour là AngularJS này? Câu hỏi của tôi là trong Angular2 – Milad

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