Angular 组件通信 parent - child 不工作
Angular component communication parent - child not working
我在 parent - child 组件之间的通信有问题。
我有一个包含多个项目的列表,我想将其放入 child 组件中,但另一方面,他不会填写 child object 并给出未定义。 parent object 知道项目的数量,因此它被正确初始化并且还通过调试填充了 object。但是在 child 中,一个未定义的字段用于填充我要放置 object 数据的每张卡片。
让我们看看代码:
@NgModule({
imports: [
BrowserModule,
FormsModule,
NgbModule,
MaterialModule,
AppRoutingModule,
BrowserAnimationsModule,
LayoutModule
],
declarations: [
AppComponent,
PortalcardComponent,
PortalcardsComponent,
ErrorPageComponent
],
providers: [AuthGuardService],
bootstrap: [AppComponent]
})
export class AppModule { }
是关于 portalcarc 组件,app.module.ts
中的 portalcards 组件
<app-portalcards>
</app-portalcards>
这是 app.component.html
中的标签
import { Component, Output } from '@angular/core';
import { PortalCardData } from '../../../core/interfaces/portalcard'
@Component({
selector: 'app-portalcards',
templateUrl: './portalcards.component.html',
styleUrls: ['./portalcards.component.scss']
})
export class PortalcardsComponent {
portalcards = PortalCardData;
}
portalcards.component.ts
<app-portalcard *ngFor="let portalcard of portalcards">
[portalcard]="portalcard"
</app-portalcard>
portalcard.component.ts
import { Component, Input } from '@angular/core';
import { PortalCard } from '../../interfaces/portalcard'
@Component({
selector: 'app-portalcard',
templateUrl: './portalcard.component.html',
styleUrls: ['./portalcard.component.scss']
})
export class PortalcardComponent{
@Input() portalcard: PortalCard
}
portalcard.component.html
<div class="card">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">{{portalcard.title}}</h5>
<p class="card-text">{{portalcard.subtitle}}</p>
<a href="" (click)="false" class="btn btn-primary mt-2">{{portalcard.button.title}}</a>
</div>
</div>
它可能有点小,但我没看到它:(。也许有人可以帮我。
谢谢。问候马克
这些是 google 开发人员工具栏中的错误。 2 项。 2 个错误。
enter image description here
试试这个:
<app-portalcard *ngFor="let portalcard of portalcards" [portalcard]="portalcard">
</app-portalcard>
代替您的代码:
<app-portalcard *ngFor="let portalcard of portalcards">
[portalcard]="portalcard"
</app-portalcard>
据我所知,portalcards = PortalCardData
是单数类型而不是数组。它应该首先定义为一个数组,以便可以使用 *ngFor
.
对其进行迭代
你可以试试改成这样
portalcards = PortalCardData[]
并以此正确插入输入
<app-portalcard *ngFor="let portalcard of portalcards" [portalcard]="portalcard">
</app-portalcard>
我在 parent - child 组件之间的通信有问题。 我有一个包含多个项目的列表,我想将其放入 child 组件中,但另一方面,他不会填写 child object 并给出未定义。 parent object 知道项目的数量,因此它被正确初始化并且还通过调试填充了 object。但是在 child 中,一个未定义的字段用于填充我要放置 object 数据的每张卡片。
让我们看看代码:
@NgModule({
imports: [
BrowserModule,
FormsModule,
NgbModule,
MaterialModule,
AppRoutingModule,
BrowserAnimationsModule,
LayoutModule
],
declarations: [
AppComponent,
PortalcardComponent,
PortalcardsComponent,
ErrorPageComponent
],
providers: [AuthGuardService],
bootstrap: [AppComponent]
})
export class AppModule { }
是关于 portalcarc 组件,app.module.ts
中的 portalcards 组件<app-portalcards>
</app-portalcards>
这是 app.component.html
中的标签import { Component, Output } from '@angular/core';
import { PortalCardData } from '../../../core/interfaces/portalcard'
@Component({
selector: 'app-portalcards',
templateUrl: './portalcards.component.html',
styleUrls: ['./portalcards.component.scss']
})
export class PortalcardsComponent {
portalcards = PortalCardData;
}
portalcards.component.ts
<app-portalcard *ngFor="let portalcard of portalcards">
[portalcard]="portalcard"
</app-portalcard>
portalcard.component.ts
import { Component, Input } from '@angular/core';
import { PortalCard } from '../../interfaces/portalcard'
@Component({
selector: 'app-portalcard',
templateUrl: './portalcard.component.html',
styleUrls: ['./portalcard.component.scss']
})
export class PortalcardComponent{
@Input() portalcard: PortalCard
}
portalcard.component.html
<div class="card">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">{{portalcard.title}}</h5>
<p class="card-text">{{portalcard.subtitle}}</p>
<a href="" (click)="false" class="btn btn-primary mt-2">{{portalcard.button.title}}</a>
</div>
</div>
它可能有点小,但我没看到它:(。也许有人可以帮我。
谢谢。问候马克
这些是 google 开发人员工具栏中的错误。 2 项。 2 个错误。
enter image description here
试试这个:
<app-portalcard *ngFor="let portalcard of portalcards" [portalcard]="portalcard">
</app-portalcard>
代替您的代码:
<app-portalcard *ngFor="let portalcard of portalcards">
[portalcard]="portalcard"
</app-portalcard>
据我所知,portalcards = PortalCardData
是单数类型而不是数组。它应该首先定义为一个数组,以便可以使用 *ngFor
.
你可以试试改成这样
portalcards = PortalCardData[]
并以此正确插入输入
<app-portalcard *ngFor="let portalcard of portalcards" [portalcard]="portalcard">
</app-portalcard>