지시 및 지침을 장식/확장은 적합하지 않습니다 기본 템플릿 구성 요소입니다 기존 템플릿의 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 {}
입니다 그리고 더 복잡한 경우는 ThirdPartyComponent
수많은 입력이
@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
에게 템플릿에 그들 모두를 열거하고 전송 래퍼 구성 요소는 WET하고 더러울 수 있습니다 : 래퍼 구성 요소에서 소개
<third-party inputs="inputs" that="that" should="should" be="be" enumerated="enumerated">
추가 레이아웃 요소는 어떤 경우에는 금지 될 수 있습니다.
ThirdPartyComponent
은 다른 타사 구성 요소에서 사용하는 핵심 구성 요소 (단추) 일 수 있습니다. 그렇다면 그것들도 영향을 받아야하기 때문에, 단지 그것을 확장하는 것이 아니라 인젝터 전체에 데코레이터를 장식하는 것이 필요할 수도 있습니다.
Angular 1.x에서 thirdPartyDirective
은 구성 요소 DDO에 대한 완전한 액세스를 제공하는 서비스이므로 장식, 확장, 튀김 등을 할 수 있습니다. Angular 2에서이 접근법과 직접적으로 대응하는 것은 무엇입니까? 이것이 일부 규칙을 위반하고 보증을 무효로한다면, 괜찮습니다.
메타 데이터를 내 보내지 않는 구성 요소/지시문을 어떻게 확장 할 수 있습니까?
기존 구성 요소의 메타 데이터는 어떻게 수정 될 수 있습니까?
문제를 당신이 정말로 그런 일을하려면
, 당신은
이 문서는 당신에게 관심 있었다 ... 주석을 업데이트하는 사용자 정의 장식으로 구현해야 입력은 강제로 수행되는 래퍼 구성 요소를 나타냅니다.'템플릿에서. 나는 Ng에서 이러한 것들을 공유했다. 결국 컴파일러에서 프로그래밍 방식으로 attrs를 추가했다. 나는 Ng2에서 그런 일을 효율적으로 수행 할 수있는 방법을 찾아 내려하고있다. –
estus
Btw, 좋은 책읽기, 링크 해 주셔서 감사합니다. 사실, 나는 당신이 대부분의 질문에 답하는 [이 대답] (http://stackoverflow.com/a/36837482/3731501)을 발견했습니다. – estus