Angular 属性 'content' 在类型 'never' 上不存在
Angular Property 'content' does not exist on type 'never'
所以代码很简单,我有一个组件,我想在其中呈现信息(如果存在),当组件不存在时我得到错误。
所以 post-list.component.html 看起来像这样:
<mat-expansion-panel *ngFor="let post of posts">
<mat-expansion-panel-header>
<mat-panel-title>
{{ post.title }}
</mat-panel-title>
<!-- <mat-panel-description>
{{post.description}}
</mat-panel-description> -->
</mat-expansion-panel-header>
<p>{{ post.content }}</p>
</mat-expansion-panel>
</mat-accordion>
<p *ngIf="posts.length >= 0">No posts added yet</p>
post-list.components.ts 看起来像这样>
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-post-list',
templateUrl: './post-list.component.html',
styleUrls: ['./post-list.component.css'],
})
export class PostListComponent implements OnInit {
constructor() {}
posts = [];
ngOnInit(): void {}
}
我收到这个错误:
Error image
您没有为 posts
属性 定义类型。当你做的时候
export class PostListComponent implements OnInit {
...
posts = [];
...
}
typescript 从其值 []
推导出 posts
属性 的类型。从一个没有任何类型信息的空数组中它 decuces never[]
,因此它假定以下
export class PostListComponent implements OnInit {
...
posts: never[] = [];
...
}
要解决此问题,请为您的 posts
属性 之类的
定义一个类型
export interface IPost {
title: string;
content: string;
...
}
export class PostListComponent implements OnInit {
...
posts: IPost[] = [];
...
}
因此,typescript 将推断出正确的类型。
您只需正确输入 posts
属性:
interface Post {
title:string;
content: string;
}
export class PostListComponent {
posts: Post[] = []; // <-- proper typings
}
在 VS 代码中只是给出错误,因为打字稿正在验证类型,angular 代码本身没有定义类型。
理想情况下,您可以在 PostListComponent 之外的某处定义 post 类型 class
export interface Post {
title: string;
content: string;
}
在您的 PostListComponent 中定义这样的类型
posts: Post[] = [];
所以代码很简单,我有一个组件,我想在其中呈现信息(如果存在),当组件不存在时我得到错误。
所以 post-list.component.html 看起来像这样:
<mat-expansion-panel *ngFor="let post of posts">
<mat-expansion-panel-header>
<mat-panel-title>
{{ post.title }}
</mat-panel-title>
<!-- <mat-panel-description>
{{post.description}}
</mat-panel-description> -->
</mat-expansion-panel-header>
<p>{{ post.content }}</p>
</mat-expansion-panel>
</mat-accordion>
<p *ngIf="posts.length >= 0">No posts added yet</p>
post-list.components.ts 看起来像这样>
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-post-list',
templateUrl: './post-list.component.html',
styleUrls: ['./post-list.component.css'],
})
export class PostListComponent implements OnInit {
constructor() {}
posts = [];
ngOnInit(): void {}
}
我收到这个错误: Error image
您没有为 posts
属性 定义类型。当你做的时候
export class PostListComponent implements OnInit {
...
posts = [];
...
}
typescript 从其值 []
推导出 posts
属性 的类型。从一个没有任何类型信息的空数组中它 decuces never[]
,因此它假定以下
export class PostListComponent implements OnInit {
...
posts: never[] = [];
...
}
要解决此问题,请为您的 posts
属性 之类的
export interface IPost {
title: string;
content: string;
...
}
export class PostListComponent implements OnInit {
...
posts: IPost[] = [];
...
}
因此,typescript 将推断出正确的类型。
您只需正确输入 posts
属性:
interface Post {
title:string;
content: string;
}
export class PostListComponent {
posts: Post[] = []; // <-- proper typings
}
在 VS 代码中只是给出错误,因为打字稿正在验证类型,angular 代码本身没有定义类型。
理想情况下,您可以在 PostListComponent 之外的某处定义 post 类型 class
export interface Post {
title: string;
content: string;
}
在您的 PostListComponent 中定义这样的类型
posts: Post[] = [];