각도 타이프의 구성 요소에 런타임 서비스를 만들고 와이어합니다. 어떻게 수동으로 여기 내 사용 사례의 2
export interface IWorkflow {
getQuestions();
validateQuestions();
getWorkflowSteps();
}
내가 입력 변수에 따라 적절한 워크 플로우를 반환하는
WorkflowManager
클래스가
export class WorkflowManager {
workflow:IWorkflow;
getWorkflow(workflow){
switch (workflow) {
case 'workflowA':
return new workflowA();
case 'workflowB':
return new workflowB();
case 'workflowC':
return new workflowC();
case 'workflowD':
return new workflowD();
default:
throw new Error(`Unrecognized workflow: ${workflow}`);
}
}
}
나는 또한로드되는 구성 요소 WorkflowComponent
이
예 (공장 패턴을?) : /workflow=WorkflowA
로드 WorkflowComponent
. 그런 다음 구성 요소는 routeparam workflow
을 추출하고 값을 기준으로 적절한 워크 플로를 반환하는 WorkflowManager
으로 전달합니다.
은 여기 내 구성 요소
@Component({
...
})
export class Workflow implements OnInit {
workflowInstance: IWorkflow;
constructor(
private route: ActivatedRoute,
private workflowManager: WorkflowManager,
) {
}
ngOnInit() {
this.route.params.subscribe(params => {
let regType: string = params['workflow'];
this.workflowInstance = this.workflowManager.getWorkflow(workflow);
});
}
}
의 조각입니다하지만 수동으로 Workflow*
클래스의 인스턴스의 아이디어를 좋아하지 않는다. 어떻게하면 Angular2가 제공하는 API를 사용하여 연결하여 다른 구성 요소에 관리/주입 할 수 있도록 개선 할 수 있습니까?
또한 현재 구현에서는 할 수있는 최선의 방법이라고 생각하지 않는 각도 프레임 워크 외부에서 ajax 호출을 만들어야합니다.
각도 프레임 워크를 활용하고이를 개선하는 방법에 대한 아이디어가 있으십니까?
감사합니다. 어쨌든 모든 것을 인스턴스화하지 않고 매번 필요한 것만을 추가하여이를 향상시킬 수 있습니까? – user6123723
무슨 뜻인지 확실치 않습니다. 위의 코드는'workflow' 매개 변수에 의해 명시 적으로 요청 된 것을 인스턴스화합니다. 사용하는 모든 DI에 대해 생성자 매개 변수로 인스턴스를 삽입하면 모든 인스턴스를 한 번에 인스턴스화합니다. –
반환 this.injector.get (workflowA), 'workflowA'(단어의 시작 부분에 작은 문자 'w'가 있음)이 클래스에서 이미 선언 된 인스턴스입니까? this.injector.get (workflowA) 문을 반환 할 때 'workflowA'의 각도 선택 WorkflowA 클래스가 어떻게 선택됩니까? 고맙습니다. – user6123723