我有繼承和裝飾一些使用情況下(如在裝飾圖案)和指示與基本模板組件,它不適合這種情況下,更容易定義一個新的模板,而不是以編程方式修改現有的DOM模板。組件元數據的其餘部分應該被繼承。擴展/在角2.</p> <p>示例裝飾角2個部件和部件的指令
基本上它是
export const BASE_SOME_COMPONENT_METADATA = { ... };
@Component(BASE_SOME_COMPONENT_METADATA);
export class BaseSomeComponent { ... }
...
import { BaseSomeComponent, BASE_SOME_COMPONENT_METADATA } from '...';
@Component(Object.assign({}, BASE_SOME_COMPONENT_METADATA, { template: '...' });
export class SomeComponent extends BaseSomeComponent {}
,更復雜的情況是
@Component({ ... });
export class ThirdPartyComponent {
@Input() ...;
@Input() ...;
@Input() ...;
...
}
...
import { ThirdPartyComponent as BaseThirdPartyComponent } from '...';
@Component({
// may modify or replace any of the original properties
template: ...,
styles: ...
...
});
export class ThirdPartyComponent extends BaseThirdPartyComponent {}
注意ThirdPartyComponent
具有衆多輸入。有時可能會在內部修改組件而不是包裝它並從外部修改其行爲。枚舉所有這些模板和轉移他們ThirdPartyComponent
包裝部件可能是溼濁:
<third-party inputs="inputs" that="that" should="should" be="be" enumerated="enumerated">
額外的佈局元素在某些情況下被禁止。
ThirdPartyComponent
可能是其他第三方組件使用的核心組件(按鈕)。然後它們也應該受到影響,所以可能有必要在整個噴射器上「裝飾裝飾器」,而不僅僅是擴展它。
In Angular 1.x thirdPartyDirective
是一種可以完全訪問組件DDO的服務,因此它們可以進行裝飾,擴展,深炸等等。Angular 2中的這種方法的直接對應方式是什麼? 如果這打破了一些規則並使保修失效,那就沒問題。
如何擴展不導出元數據的組件/指令?
如何修改現有組件的元數據?
問題輸入引用指的是一個包裝器組件,它被強制執行。在模板中。我已經在Ng中分享了這些內容,最終以編譯方式以編程方式添加了attrs。我試圖找出配方在Ng2中有效地做這樣的事情。 –
estus
順便說一句,很棒的閱讀,謝謝你的鏈接。其實,我發現你的[這個答案](http://stackoverflow.com/a/36837482/3731501)大部分回答了這個問題。 – estus