고위 주문 구성 요소 (HOC)는 React 커뮤니티에서 일반적인 패턴입니다. HOC가 무엇인지 알 수없는 경우 this article을 참조하십시오.각도 2로 고차원 구성 요소를 만드는 방법
Angular 2에서 의미가 있습니까? HOC를 만드는 방법? 예제가 있습니까?
고위 주문 구성 요소 (HOC)는 React 커뮤니티에서 일반적인 패턴입니다. HOC가 무엇인지 알 수없는 경우 this article을 참조하십시오.각도 2로 고차원 구성 요소를 만드는 방법
Angular 2에서 의미가 있습니까? HOC를 만드는 방법? 예제가 있습니까?
저는 HOC (Angular 2와 같은 Recompose)와 비슷한 것에도 매우 관심이 있습니다. 나는 최근 Angular 구조 지시어를 사용하여 angleToProps HOC 'Recompose for Angular - mapToInputs에 아날로그를 만들려고했다. 나는 더 나은 접근법을 찾고있다.
@Component({
selector: 'user-list',
template: `
<h2>{{status}} users</h2>
<div *ngFor="let item of data">{{item}}</div>
`
})
export class UserList {
@Input() data: Array<any>;
@Input() status: string;
}
@Directive({selector: '[mapInputs]'})
export class MapInputs {
component;
@Input() set mapInputsComponent(component) {
this.component = component;
}
@Input() set mapInputs(fn) {
this.vc.clear();
let factory = this.componentFactoryResolver.resolveComponentFactory(this.component);
let componetRef = this.vc.createComponent(factory);
let inputs = fn();
console.log(inputs);
Object.entries(inputs).forEach(([key, value]) => {
componetRef.instance[key] = value;
});
}
constructor(private vc: ViewContainerRef,
private componentFactoryResolver: ComponentFactoryResolver) {
}
}
@Component({
selector: 'my-app',
template: `
<div>
<button (click)="doubledata()">Doubel Data</button>
<div *mapInputs="filterBy.bind(null, {data:data, status:'active'}); component: component"></div>
<div *mapInputs="filterBy.bind(null, {data:data, status:'passive'}); component: component"></div>
<div *mapInputs="filterBy.bind(null, {data:data, status:'blocked'}); component: component"></div>
</div>
`,
})
export class App {
name: string;
component = UserList;
data = ['active', 'active', 'passive', 'blocked', 'blocked'];
filterBy = (context) => {
return {
status: context.status,
data: context.data.filter(el => el === context.status);
};
}
doubledata(){
this.data = this.data.concat(this.data);
}
constructor() {
this.name = `Angular! v${VERSION.full}`
}
}
보기 흉하게 접근합니다. Angular가 "자연스럽게"그렇게하지 못하는 것처럼 보입니다 ...이 접근법을 너 자신에게 사용하고 있습니까? –
여기에 두 가지 두 가지 유형의 HOC가 있습니다. 프록시 소품 HOC 각도로 만들 수 있지만 상속 반전 - 나는 어떻게 AOT와 각도로 할 생각이 없습니다. 나는 반응의 HOC에 대한 아이디어를 정말 좋아하고 각성 상태에 빠지기를 좋아한다. –
어쩌면 다음 내용이 도움이 될 수 있습니다. https://angular.io/docs/ts/latest/cookbook/dynamic-form.html, http://mean.expert/2016/05/14/angular-2 -container-component/ – Sasxa
현 상태의 질문은 반응과 각도 모두를 잘 이해해야합니다. 2. HOC 용어를 사용하지 않고 정확히 무엇을하고 싶은지 설명하면 양질의 대답을 얻을 수있는 기회가 증가합니다. – estus