managestation.ts
import { Component, OnInit } from '@angular/core';
import { Station } from 'src/app/_models/station';
import { StationService } from 'src/app/_services/station.service';
import { AddStaModalComponent } from 'src/app/modal/station/add-sta-modal/add-sta-modal.component';
import { EditStaModalComponent } from 'src/app/modal/station/edit-sta-modal/edit-sta-modal.component';
import { DataSharingService } from 'src/app/_services/data-sharing.service';
import { ActivatedRoute, Router, NavigationEnd } from '@angular/router';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@Component({
selector: 'app-managestation',
templateUrl: './managestation.component.html',
styleUrls: ['./managestation.component.scss'],
})
export class ManagestationComponent implements OnInit {
sta: Station;
mySubscription: any;
constructor(
private dataSharing: DataSharingService,
private staService: StationService,
private activatedRoute: ActivatedRoute,
private router: Router
) {}
getStationsByOrg(id) {
this.staService.getStationsByOrg(id)
.then((allData) => {
console.log(allData);
this.sta = allData;
});
}
}
managestation.component.html
<ion-content class="body">
<ion-button expand="block" (click)="onAddStation()">Add Station
<ion-icon name='add' slot="end"></ion-icon>
</ion-button>
<ion-list>
<ion-item *ngFor="let s of sta">
<ion-label>{{ s.name }}</ion-label>
<ion-label>{{ s.orgId }}</ion-label>
<ion-icon name='create' slot="end" (click)="onEditStation(s.id)"></ion-icon>
<ion-icon name='trash' slot="end" (click)="onDeleteStation(s.id)"></ion-icon>
</ion-item>
</ion-list>
</ion-content>
station.ts
import { StationStatus } from './station-status.enum';
export class Station {
id: number;
name: string;
orgId: number;
address?: string;
status: StationStatus;
constructor(id?: number, name?: string, orgId?: number, address?: string, status?: StationStatus) {
this.id = id;
this.name = name;
this.orgId = orgId;
this.address = address;
this.status = status;
}
}
终端错误
src / app / members / managestation / managestation.component.ts(66,10)中的错误:错误TS2739:类型“ {}”缺少类型“ Station”的以下属性:id,名称,orgId,状态
控制台输出
Array [ (4) […] ]
managestation.component.ts:65:16
(1) […]
0: (4) […]
0: Object { id: 5, orgId: 2, name: "BitCo Gas Jos North", … }
1: Object { id: 6, orgId: 2, name: "BitCo Gas Awolowo Road ", … }
2: Object { id: 7, orgId: 2, name: "BitCo Gas Kano Central", … }
3: Object { id: 8, orgId: 2, name: "BitCo Gas Efik", … }
length: 4
<prototype>: Array []
length: 1
<prototype>: Array []
我正在console.log中获取结果,但是我无法在我的html组件文件中使用它
结果
[
[
{
"id": 9,
"orgId": 3,
"name": "Conap Corp Ikeja",
"address": "23, Ogunlowo Street, Obafemi Awolowway. Ikeja, Lagos",
"status": "active"
},
{
"id": 10,
"orgId": 3,
"name": "Conap Corp Ota",
"address": "23, Ogunlowo Street, Obafemi Awolowway. Ikeja, Lagos",
"status": "active"
},
{
"id": 11,
"orgId": 3,
"name": "Conap Corp Agbara",
"address": "23, Ogunlowo Street, Obafemi Awolowway. Ikeja, Lagos",
"status": "active"
},
{
"id": 12,
"orgId": 3,
"name": "Conap Corp Agbado",
"address": "23, Ogunlowo Street, Obafemi Awolowway. Ikeja, Lagos",
"status": "active"
}
]
]
答案 0 :(得分:1)
您从API调用中收到了一个空对象{}
,并且您为该API调用可能设置的数据类型为Station
。另外,sta
类型为Station
:sta: Station;
。您不能将空对象设置为sta
。
更新:
可以观察到allData
的存在。
答案 1 :(得分:0)
您还遇到另一个错误,请查看您的代码:
export class Station {
id: number;
name: string;
orgId: number;
address?: string;
status: StationStatus;
constructor(id?: number, name?: string, orgId?: number, address?: string, status?: StationStatus) {
this.id = id;
this.name = name;
this.orgId = orgId;
this.address = address;
this.status = status;
}
查看属性,请注意。问题是,如果您查看声明,则表示大多数属性不能为null,但是如果您查看构造函数,则表示相反,哪一个是正确的?
答案 2 :(得分:0)
我添加了allData[0]
,它现在可以正常工作
getStationsByOrg(id) {
this.staService.getStationsByOrg(id)
.then((allData) => {
console.log(allData);
this.sta = allData[0];
});
}