我正在使用angular 5.我创建了一些模型类,用于序列化从服务器接收的json数据。这些模型类不在角度5代码中实例化。当webpack创建main.bundle.js时,它不包含这些类。代码编译正确,但我在运行时遇到错误。
Uncaught (in promise): TypeError: _this.contentTemplate.init is not a function
TypeError: _this.contentTemplate.init is not a function
发生此错误的相应代码是:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { ContentTemplate } from '../model/content-template.model';
@Injectable()
export class ContentTemplateService {
contentTemplate: ContentTemplate;
constructor(private http: HttpClient) { }
init(): Observable<ContentTemplate> {
console.log("Loading content template...");
if (this.contentTemplate) {
return Observable.of(this.contentTemplate);
}
return this.http.get<ContentTemplate>('/template')
.map(
contentTemplate => {
this.contentTemplate = contentTemplate;
this.contentTemplate.init();
return this.contentTemplate;
},
error => {
// TODO: error loading template
}
);
}
}
内容模板模型类如下:
import { Container } from './container.model';
import { DataDefinition } from './data-definition.model';
export class ContentTemplate {
id: string;
version: string;
dataDefinition: DataDefinition;
init() {
this.dataDefinition.init();
}
}
如果我在调用的任何类中创建这些类的实例:
const myContentTemplate = new ContentTemplate();
然后webpack包含这个类。
我是webpack和angular的新手,所以我无法弄清楚我是否遗漏了什么。
感谢。