我是新手angular2,有没有一种在运行时创建模型(或类)的方法。
标准技术是在单独的文件(例如Hero.ts,Customer.ts,Salesman.ts等)中声明它
但是由于应用程序的性质,它自身的数据库结构经常需要更改。
我们的策略是使用WebAPI以字符串JSON格式获取模型/类结构,并基于下载的JSON字符串在运行时创建模型/类结构。
我们如何用TypeScript完成?
谢谢
答案 0 :(得分:0)
您的数据库结构经常更改吗?听起来很令人兴奋。 :)我会为您提到的每个模型创建一个接口,但是将属性标记为可选:
openCloseNav
然后,您可以从HTTP响应中获取对象,并说它们属于Hero类型。
答案 1 :(得分:0)
啊……实际上是在英雄之旅文档的开始,即 类型检查之前。链接:https://angular.io/guide/http#getting-json-data
不需要类型检查。只是推荐而已。
处理JSON对象:
a.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class AService {
constructor(private http: HttpClient) { }
getData() {
return this.http.get('http://something.com/api'); // Returns an observable
}
}
a.component.ts
export class AComponent {
constructor(private service: AService) { }
doSomething() {
this.service.getData().subscribe((data) => {
// do things here
});
}
}
如果请求是一次性请求,并且您不需要操纵可观察对象中的数据,则可以使用Promises和async / await编辑原始JS对象数据:
a.service.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable()
export class AService {
constructor(private http: HttpClient) { }
getData() {
return this.http.get('http://something.com/api').toPromise(); // Returns a promise
}
}
a.component.ts
export class AComponent {
constructor(private service: AService) { }
async doSomething() {
const data = await this.service.getData();
// do things here
}
}