我刚刚开始使用Angular2,我有一个我不能真正理解的问题。
我创建了一些模拟数据:
export const WORKFLOW_DATA: Object =
{
"testDataArray" : [
{ key: "1", name: "Don Meow", source: "cat1.png" },
{ key: "2", parent: "1", name: "Roquefort", source: "cat2.png" },
{ key: "3", parent: "1", name: "Toulouse", source: "cat3.png" },
{ key: "4", parent: "3", name: "Peppo", source: "cat4.png" },
{ key: "5", parent: "3", name: "Alonzo", source: "cat5.png" },
{ key: "6", parent: "2", name: "Berlioz", source: "cat6.png" }
]
};
然后将其导入服务并“观察”
import { Injectable } from '@angular/core';
import { WORKFLOW_DATA } from './../mock-data/workflow'
import {Observable} from "rxjs";
@Injectable()
export class ApiService {
constructor() { }
getWorkflowForEditor(): Observable<Object>
{
return Observable.of( WORKFLOW_DATA );
}
}
然后我有一个组件,在构造函数中:
constructor( private apiService: ApiService)
{
this.apiService.getWorkflowForEditor().subscribe( WORKFLOW_DATA => {
console.log( WORKFLOW_DATA);
console.log( WORKFLOW_DATA.testDataArray );
} );
}
第一个控制台。日志记录包含testDataArray属性的Object类型的对象。
第二个控制台。日志,在编译时导致错误:
Property 'testDataArray' does not exist on type 'Object'.
同时仍按预期记录对象[Object, Object,...]的数组。
我真的不明白为什么,我肯定我做错了什么,我想要一个解释。
谢谢你的帮助!
返回类型,如果您的方法是可观察的
>
键入不同的数据和返回类型
WORKFLOW_DATA: { testDataArray: any } = []
getWorkflowForEditor(): Observable<{ testDataArray: any }>
或者只需将响应数据键入assert to
any
console.log( (<any>WORKFLOW_DATA).testDataArray );
当你告诉tyescript:
WORKFLOW\u数据:对象
你告诉它WORKFLOW_DATA
是一个没有属性的普通对象。当您稍后尝试访问WORKFLOW_DATA. testDataArray
时,编译器认为您误用了类型。
如果要对工作流\u数据进行类型检查
,则需要创建一个描述对象的界面。
Typescript希望工作流\u数据
为对象
此处:
.subscribe( WORKFLOW_DATA => {} )
因为你是这么说的:
getWorkflowForEditor(): Observable<Object>
但是Object
没有testDataArray
属性。。。您应该告诉TypeScript数据可以有任何属性:
getWorkflowForEditor(): Observable<any>
或者使用
console.log( WORKFLOW_DATA["testDataArray"] );
我想使用以下代码实现文件下载: RestAPI: 服务: 组件: 当我启动angular时,我得到错误:src/app/panel/service/download中的错误。服务ts(17,91):错误TS2339:类型“Observable”上不存在属性“map”。 将导入代码的正确wya是什么?当我点击下载按钮时,什么也没发生。
我使用的是完全修补过的Visual Studio 2013。我正在尝试使用JQuery、JQueryUI和JSRender。我也在尝试使用打字。在ts文件中,我得到如下错误: 类型“{}”上不存在属性“fade div”。
我试图在登录过程后获得连接的用户模型, 首先,在CanActivate guard检查了带有用户JSON对象的本地存储并发现该对象为空之后,用户将重定向到“/login”URL 然后用户登录并重定向回根URL“/”,在连接过程中我使用AuthService,它将从服务器返回的用户对象保存在用户模型中 这是我的守卫:
我是个新手。目前我正在学习6个特征。当我试图处理错误时,会出现如下问题:, 未找到模块:错误:无法解析“D:\WORKSPACE\Angular5\binding\src\app”中的“rxjs/add/observable/throw” 找不到模块:错误:无法解决'D:\WORKSPACE\Angular5\绑定\src\app'中的'rxjs/add/操作员/捕获' src/app/emplo
升级到Angular 6.0和Rxjs到6.0后,我收到以下编译错误:
获取错误:(类型窗口中不存在属性“MktoForms2”