代码之家  ›  专栏  ›  技术社区  ›  Gil Epshtain

Angular-如何将参数传递给TypeScript基类

  •  0
  • Gil Epshtain  · 技术社区  · 6 年前

    要在Angular的服务/组件/指令和其他结构中使用依赖注入,您需要 Import 其他结构,然后在构造函数中列出它们。
    例如(注射) Title 服务):

    import { Title } from '@angular/platform-browser';
    
    @Component({ ... })
    export class AppComponent implements OnInit {
      public constructor(private _titleService: Title) {}
    
      public ngOnInit(): void {
        this._titleService.setTitle("I'm the Home Page"); // use injected service
      }
    }
    

    现在我想用基类和驱动器类创建多态族,在基类中我注入外部服务,另外我不想将参数从驱动器类传递到基类

    import { Title } from '@angular/platform-browser';
    
    @Component({ ... })
    export class BaseService {
      public constructor(
        private _titleService: Title,
        private _message: string) {
        console.log("Hello, I'm Base class. Message from Drive class: " + _message);
      }
    }
    
    @Component({ ... })
    export class DriveService extends BaseService {
      public constructor() {
        const message = "Hello from Drive class";
        super(message); // <-- Error, missing parameter!  
      }
    }
    

    我的电脑出了一个错误 DriveService BaseService 因为我没有通过标题服务。
    现在我 不想从所有的孩子那里传递标题服务 BaseService的类。我想 导入并注入titleService 在BaseService代码中,只传递来自所有子类的_message参数。

    这可能吗?如果是,怎么做?或者我应该导入TitleService并将其注入到DriveClass的每个实例中

    1 回复  |  直到 6 年前
        1
  •  0
  •   Kurt Hamilton    6 年前

    必须将所有基类依赖项注入扩展基类的类中。而且 super

    import { Title } from '@angular/platform-browser';
    
    @Component({ ... })
    export class BaseService {
      public constructor(
        private _titleService: Title,
        private _message: string) {
        console.log("Hello, I'm Base class. Message from Drive class: " + _message);
      }
    }
    
    @Component({ ... })
    export class DriveService extends BaseService {
      public constructor(titleService: Title) {
        super(titleService, "Hello from Drive class");
      }
    }
    

    我还没有提到你装饰了一个叫做 xxxService 具有 @Component()

    推荐文章