从 Angular 函数返回对象数组时出错
Error returning an array of objects from an Angular function
下午好,我想从外部函数 return 对象数组时遇到问题。
我已经声明了一个对象 class 有 2 个属性,它的构造函数和一个在我 return 这个例子中有超过 50 个对象的数组我只放了 4 个对象
export class Object {
formcontrolName: String;
formcontrolTraducido: String;
constructor(formcontrolName: String, formcontrolTraducido: String) {
this.formcontrolName = formcontrolName;
this.formcontrolTraducido = formcontrolTraducido;
}
getData() {
return [
{ formcontrolName: 'callId', formcontrolTraducido: 'CId' },
{ formcontrolName: 'collegeCareerId', formcontrolTraducido: 'Carrera' },
{
formcontrolName: 'collegeDepartmentId',
formcontrolTraducido: 'Nombre del Departamento/Centro',
},
{
formcontrolName: 'detailedAreaKnowledgeId',
formcontrolTraducido: 'Campo Detallado',
},
];
}
}
问题是我想从另一个组件调用对象 class 的 getData 函数,但是当 returning 时出现以下错误:
类型 '() => { formcontrolName: string; formcontrolTraducido: 字符串; }[]' 缺少类型 'Object[]' 中的以下属性:pop、push、concat、join
import { Component, OnInit } from '@angular/core';
import { Object } from './object';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
data: Object;
arrayData: Object[];
constructor() {}
ngOnInit() {
this.arrayData = this.data.getData;
console.log('arrayData: ' + this.arrayData);
}
}
我是 angular 的新手,刚开始使用数组,我想知道如何解决我的问题。非常感谢
首先 属性 arrayData
的类型不是 Object 类型,它是您正在使用的 class , 因此更合适的类型应该与 return 通过 getData
.
方法编辑的类型相同
您可以通过使用打字稿助手类型 ReturnType
来获取它的 return 类型,因此一个好的输入方式如下:
arrayData: ReturnType<Object['getData']>;
我的一个建议是不要将名称 Object
用于 class,因为它与 Object
和 javascript 内置名称相同。
之后你遇到的问题:
ngOnInit() {
this.arrayData = this.data.getData();
console.log('arrayData: ' + this.arrayData);
}
是不是您正在将方法分配给需要数组的变量,这就是您收到错误的原因:
Type '() => { formcontrolName: string; formcontrolTraducido: string; }[]' is missing the following properties from type 'Object[]': pop, push, concat, join
你只需要调用这样的方法:
this.arrayData = this.data.getData();
考虑到所有这些,最终代码如下所示:
import { Component, OnInit } from '@angular/core';
import { Object } from './object';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
name = 'Angular';
data: Object;
arrayData: ReturnType<Object['getData']>;
constructor() {}
ngOnInit() {
this.arrayData = this.data.getData();
console.log('arrayData: ' + this.arrayData);
}
}
下午好,我想从外部函数 return 对象数组时遇到问题。
我已经声明了一个对象 class 有 2 个属性,它的构造函数和一个在我 return 这个例子中有超过 50 个对象的数组我只放了 4 个对象
export class Object {
formcontrolName: String;
formcontrolTraducido: String;
constructor(formcontrolName: String, formcontrolTraducido: String) {
this.formcontrolName = formcontrolName;
this.formcontrolTraducido = formcontrolTraducido;
}
getData() {
return [
{ formcontrolName: 'callId', formcontrolTraducido: 'CId' },
{ formcontrolName: 'collegeCareerId', formcontrolTraducido: 'Carrera' },
{
formcontrolName: 'collegeDepartmentId',
formcontrolTraducido: 'Nombre del Departamento/Centro',
},
{
formcontrolName: 'detailedAreaKnowledgeId',
formcontrolTraducido: 'Campo Detallado',
},
];
}
}
问题是我想从另一个组件调用对象 class 的 getData 函数,但是当 returning 时出现以下错误:
类型 '() => { formcontrolName: string; formcontrolTraducido: 字符串; }[]' 缺少类型 'Object[]' 中的以下属性:pop、push、concat、join
import { Component, OnInit } from '@angular/core';
import { Object } from './object';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
data: Object;
arrayData: Object[];
constructor() {}
ngOnInit() {
this.arrayData = this.data.getData;
console.log('arrayData: ' + this.arrayData);
}
}
我是 angular 的新手,刚开始使用数组,我想知道如何解决我的问题。非常感谢
首先 属性 arrayData
的类型不是 Object 类型,它是您正在使用的 class , 因此更合适的类型应该与 return 通过 getData
.
您可以通过使用打字稿助手类型 ReturnType
来获取它的 return 类型,因此一个好的输入方式如下:
arrayData: ReturnType<Object['getData']>;
我的一个建议是不要将名称 Object
用于 class,因为它与 Object
和 javascript 内置名称相同。
之后你遇到的问题:
ngOnInit() {
this.arrayData = this.data.getData();
console.log('arrayData: ' + this.arrayData);
}
是不是您正在将方法分配给需要数组的变量,这就是您收到错误的原因:
Type '() => { formcontrolName: string; formcontrolTraducido: string; }[]' is missing the following properties from type 'Object[]': pop, push, concat, join
你只需要调用这样的方法:
this.arrayData = this.data.getData();
考虑到所有这些,最终代码如下所示:
import { Component, OnInit } from '@angular/core';
import { Object } from './object';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent implements OnInit {
name = 'Angular';
data: Object;
arrayData: ReturnType<Object['getData']>;
constructor() {}
ngOnInit() {
this.arrayData = this.data.getData();
console.log('arrayData: ' + this.arrayData);
}
}