在我添加了一个名为ngInit的函数(该函数将调用服务类中的getCountries函数)之后,我得到了这个“类型”对象“不可分配给类型”null“"的错误。
import { Component, OnInit } from '@angular/core';
import {MessageService} from './message.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Tour of Heroes';
countryData = null;
constructor(private api:MessageService) {}
ngOnInit() {
this.api.getCountries().subscribe((data)=>{
this.countryData = data;
});
}
}
4条答案
按热度按时间rseugnpd1#
由于
countryData = null
属性的初始化,TypeScript推断countryData
的类型为null
。将null
以外的任何值分配给此属性都将导致您看到的错误。要修复,您可以:
1.键入
any
的属性:1.定义数据类型,并将属性设置为该类型或
null
:1.定义数据类型,将属性设置为该类型,并将其标记为可选(请注意,在本例中,初始值为
undefined
,而不是null
):wkyowqbh2#
您已经在tsconfig中将返回类型声明为null或关闭strictNullChecks。
将类型null更改为any。
j0pj023g3#
要使其正常工作,只需将类型更改为any或为国家/地区提供接口
或者叫罗比
ddhy6vgd4#
当你用null初始化countryData时,编译器会将新值与null类型进行比较--这与你用String类型初始化它并尝试分配一个Number类型是一样的。如果你需要一次性的解决方案,只需使用类型转换。
而不是
this.countryData = data
因此:如果你想让这个字段类型检查免疫只需看看@Vignesh答案.