干掉一个 Angular2 TypeScript 类



我对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 类中提供构造函数参数?我想做的是将所有导入和共享方法封装在基类上。这可能吗?如果没有,完成我想做的事情的最佳方式是什么?

甚至其他语言也希望您为新类提供一个新的构造函数(包括参数(,然后将这些参数传递到父类的构造函数中以执行您所询问的操作。 http://www.c-sharpcorner.com/UploadFile/5089e0/how-to-use-super-keyword-in-typescript/

使用 super(sharedState)sharedState 参数从子级传递到父级的构造函数中。

如果要从父类访问成员变量,请使用 protected 而不是 private

最新更新