繁体   English   中英

Angular 5了解外部类导入

[英]Angular 5 Understanding External Class Imports

我为时间表创建了一个类模型。 然后,将此类导入到我的主程序中。 我的问题是,此类使用HttpClient,而有人教我使用它的方法是在该类的构造函数中为其创建变量。 但是问题来了,当我创建Schedule的新实例(newSchedule = new Schedule;)时,它期望在HttpClient处放置一个参数。 当我要创建类的新实例时,如何使它忽略HttpClient?

这是Schedule模型类:

import { HttpClient } from '@angular/common/http';
export class Schedule {
    constructor(private httpClient: HttpClient) {}
}

但是现在我需要在我的主程序中传递this.HttpClient,当然不需要:

import { HttpClient } from '@angular/common/http';
export class AppComponent {
    constructor(private httpClient: HttpClient) {}
    var NewSchedule = new Schedule(this.HttpClient);
}

如何消除传递this.HttpClient的需要? 我认为我的过程很错

您的过程似乎确实是错误的。 但是您需要帮助,所以我们提供了。

您需要使构造函数的参数为​​可选。 这样做:

export class Schedule {
  constructor(private http?: HttpClient){}
}

您也可以给它一个默认值:

export class Schedule {
  constructor(private http: HttpClient = null){}
}

阅读注释后,据我了解,您希望拥有Schedule类的不同实例,但仍想访问httpClient对象。

执行以下操作可能是一种解决方案:

Schedule类下创建一个公共方法:

public getNewInstance(object: Object) {
    let obj = Object.create(object.constructor.prototype);
    object.constructor.apply(obj, [this.httpClient]);
    return obj;
}

同时使您的Subject类可注射。 请注意,您的课程将是可注入的,并且是另一个课程中的一个单例,但是您将可以使用该单例来获取多个实例

做类似的事情:

@Injectable()
export class Schedule ...

然后,在您的appComponent中,注入Subject

export class AppComponent {
constructor(private subjectInstance: Subject) {}
...

private newSubjectInstance;
ngOnInit() {
    this.newSubjectInstance = this.subjectInstance.getNewInstance(this.subjectInstance);
    // so this should be a new instance but still have the httpClent inside it.
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM