저는 TypeScript가 비교적 새로 도입되었습니다. 나는 공통의 기능과 상태를 공유하는 두 개의 라우트 가드를 구현할 필요가있다.Angular2 TypeScript 클래스의 압축
생성자를 사용하여 주입 가능 클래스를 확장하려고하면 결과 클래스가 개인 멤버의 인스턴스를받지 못합니다.
인위적인 예 :
// guard-base.ts
@Injectable()
export abstract class GuardBase {
constructor(
private sharedState: SharedState,
) {}
sharedMethod(): boolean {. . .}
}
// authentication-required.guard.ts
@Injectable()
export class RouteGuard extends GuardBase implements CanActivate {
canActivate(): Promise<boolean> {
console.log(this);
// this.sharedState equals undefined at this point
}
}
나는 RouteGuard
클래스의 생성자 인수를 제공해야합니까? 내가 뭘하고 싶은 모든 기본 클래스에 가져 오기 및 공유 메서드를 캡슐입니다. 그게 가능하니? 그렇지 않다면 내가하고 싶은 것을 성취하는 가장 좋은 방법은 무엇입니까?
Gotcha. 흠. 나는 좀 더 우아한 뭔가를 원했다. 비 추상적 클래스를 확장 할 때 동일한 문제가 발생합니까? – Brandon
@ Brandon- 예, 이것은 모든 클래스, 추상 또는 콘크리트에서 동일합니다. – ps2goat
도움 주셔서 감사합니다. 필자가 사용했던 Python만큼 건조한 것은 아니지만 작동 할 것입니다. :) – Brandon