加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Angular 4:使用构造函数作为http Observable模型的类

发布时间:2020-12-17 07:50:34 所属栏目:安全 来源:网络整理
导读:在我的应用程序中,我有一个模型定义为带有构造函数的Class.喜欢这个: export class Movie { title: string; posterURL: string; description: string; public constructor(cfg: PartialMovie) { Object.assign(this,cfg); } getEndDate(): Date { return ne
在我的应用程序中,我有一个模型定义为带有构造函数的Class.喜欢这个:
export class Movie {
    title: string;
    posterURL: string;
    description: string;

    public constructor(cfg: Partial<Movie>) {
        Object.assign(this,cfg);
    }

    getEndDate(): Date {
        return new Date();
    }
};

我也有一个使用此模型的HTTP请求

getMoviesData(): Observable<Movie[]> {
    return this.http.get<Movie[]>(`http://localhost:3544/movies`)
}

正如所料,它不起作用

我怎么解决这个问题?我还应该创建一个界面还是什么?

谢谢您的帮助 :)

HttpClient方法是通用的,this.http.get< Movie []>断言结果符合Movie []界面,不会创建Movie实例.

为了使结果成为类实例,应该显式地实例化该类.类构造函数最好接受普通对象,哪些属性将分配给类实例,而Movie已经使用cfg参数执行此操作.

因为Partial< Movie>不太可能type精确描述了接口,最好声明一个单独的接口:

interface IMovie {
    title: string;
    posterURL: string;
    description: string;
}

class Movie implements IMovie { ... }

...

getMoviesData(): Observable<Movie[]> {
    return this.http.get<IMovie[]>(...)
    .map(plainMovies => plainMovies.map(plainMovie => new Movie(plainMovie)))
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读