Angular 来自其他组件的@Input() 数组,问题
Angular @Input() array from other component, problem
我是 Angular 的新手,我正在尝试开发一个非常基本的博客应用程序。我在这里得到了一些帮助,可以通过 @Input() 装饰器从另一个组件中检索 属性 ,但它似乎不适用于数组,或者至少不适用于数组。
在嵌入 post-list 组件的 post-list-item 组件中,我想显示位于 app-component.ts 数组中的属性值。
显然我遗漏了一些东西,我不知道它是什么,因此请求你的帮助!
这是我的代码:Stackblitz
我猜你想要
<ul class="list-group" *ngFor="let p of publisPL">
<app-post-list-item [titrePubliIT]="p.titrePubliPL"
[contenuPubliIT]="p.contenuPubliPL"
[datePubliIT]="p.datePubliPL"></app-post-list-item>
</ul>
或(但更改 @Input()s
<ul class="list-group" *ngFor="let p of publisPL">
<app-post-list-item [publish]="p">
</ul>
//and use
{{p.titrePubliIT}}
而且你不需要创建函数 getTitrePubli(),getContenuPubli(),...
可以直接使用
{{titrePubliIT}}
一个@Input
也是一个public变量
感谢分享 stackblitz。我相信这就是您要尝试处理的数组,对吧?
[
{ titrePubli: "Ma première publi", contenuPubli: "C'est le bla bla bla" },
{ titrePubli: "Ma seconde publi", contenuPubli: "Un autre blablabla" },
{ titrePubli: "Ma troisième publi", contenuPubli: "Ohlàlà" },
];
你不必这样做:
<app-post-list-item
*ngFor="let p of publisPL"
[publisIT]="p"
[titrePubliIT]="p.titrePubliPL"
[contenuPubliIT]="p.contenuPubliPL"
[datePubliIT]="p.datePubliPL"
></app-post-list-item>
相反,您可以这样做:
<app-post-list-item
*ngFor="let p of publisPL"
[publisIT]="p"
></app-post-list-item>
并且在 post-list-item.component.html 中,您可以直接访问值,而无需使用这么多方法的所有麻烦:
<li class="list-group-item">
<h3 style="font-size: 20px;">Titre : {{ publisIT?.titrePubli }}</h3>
<h4 style="font-size: 18px;">Contenu : {{ publisIT?.contenuPubli }}</h4>
<button type="button" class="btn btn-success"
(click)="onJadore()">
J'adore {{ getJadorePubli() }}</button>
<button type="button" class="btn btn-danger"
style="position: relative; left: 0.6em;"
(click)="onJeDeteste()">
Je déteste {{ getJeDetestePubli() }}</button>
<p style="display: inline; position: relative; top: 0.6em; left: 1em;">{{ getDatePubli() | date: "EEEE dd/MM/yy HH:mm" }}</p>
</li>
就像我对标题和内容所做的那样。目前我只在 objects 中找到这两个字段,同样适用于其他字段。
另外,我做了一个 stackblitz,这会更有意义。我删除了一些东西,这样您就知道什么是必需的,什么不是。
我是 Angular 的新手,我正在尝试开发一个非常基本的博客应用程序。我在这里得到了一些帮助,可以通过 @Input() 装饰器从另一个组件中检索 属性 ,但它似乎不适用于数组,或者至少不适用于数组。 在嵌入 post-list 组件的 post-list-item 组件中,我想显示位于 app-component.ts 数组中的属性值。 显然我遗漏了一些东西,我不知道它是什么,因此请求你的帮助!
这是我的代码:Stackblitz
我猜你想要
<ul class="list-group" *ngFor="let p of publisPL">
<app-post-list-item [titrePubliIT]="p.titrePubliPL"
[contenuPubliIT]="p.contenuPubliPL"
[datePubliIT]="p.datePubliPL"></app-post-list-item>
</ul>
或(但更改 @Input()s
<ul class="list-group" *ngFor="let p of publisPL">
<app-post-list-item [publish]="p">
</ul>
//and use
{{p.titrePubliIT}}
而且你不需要创建函数 getTitrePubli(),getContenuPubli(),...
可以直接使用
{{titrePubliIT}}
一个@Input
也是一个public变量
感谢分享 stackblitz。我相信这就是您要尝试处理的数组,对吧?
[
{ titrePubli: "Ma première publi", contenuPubli: "C'est le bla bla bla" },
{ titrePubli: "Ma seconde publi", contenuPubli: "Un autre blablabla" },
{ titrePubli: "Ma troisième publi", contenuPubli: "Ohlàlà" },
];
你不必这样做:
<app-post-list-item
*ngFor="let p of publisPL"
[publisIT]="p"
[titrePubliIT]="p.titrePubliPL"
[contenuPubliIT]="p.contenuPubliPL"
[datePubliIT]="p.datePubliPL"
></app-post-list-item>
相反,您可以这样做:
<app-post-list-item
*ngFor="let p of publisPL"
[publisIT]="p"
></app-post-list-item>
并且在 post-list-item.component.html 中,您可以直接访问值,而无需使用这么多方法的所有麻烦:
<li class="list-group-item">
<h3 style="font-size: 20px;">Titre : {{ publisIT?.titrePubli }}</h3>
<h4 style="font-size: 18px;">Contenu : {{ publisIT?.contenuPubli }}</h4>
<button type="button" class="btn btn-success"
(click)="onJadore()">
J'adore {{ getJadorePubli() }}</button>
<button type="button" class="btn btn-danger"
style="position: relative; left: 0.6em;"
(click)="onJeDeteste()">
Je déteste {{ getJeDetestePubli() }}</button>
<p style="display: inline; position: relative; top: 0.6em; left: 1em;">{{ getDatePubli() | date: "EEEE dd/MM/yy HH:mm" }}</p>
</li>
就像我对标题和内容所做的那样。目前我只在 objects 中找到这两个字段,同样适用于其他字段。
另外,我做了一个 stackblitz,这会更有意义。我删除了一些东西,这样您就知道什么是必需的,什么不是。