我有兩個從NodeJS MongoDB和socket.io服務器動態生成的激情陣列,我知道來源可能并不重要,但是:
passions1:
[{_id: '60a1557f0b4f226732c4597b', name: 'Netflix'}。
{_id: '60a1557f0b4f226732c45980', name: 'Music'}。
{_id: '60a1557f0b4f226732c45991', name: 'Hiking'}]
passions2:
[{_id: '60a4457fr54646647888876d', name: '烹飪'}。
{_id: '60a1557f0b4f226732c4597b', name: 'Netflix'}。
{_id: '60a1557f0b4f226732c45997', name: '游泳'}]
用肉眼可以看出,物件{_id: '60a1557f0b4f226732c4597b', name: 'Netflix'}存在于兩個陣列中
你如何用現有的物件輸出或重新創建一個新的陣列,例如使用angular的Netflix?
我的代碼:
<div *ngFor="let passion of passions1"/span>>
<span>{{passion.name}}<span>
<!-
我被困在這里 .....
<span *ngIf="passion.name == passion[]">{{passion.name}}<span>
-->
</div>
任何答案的型別化/JavaScript將有很大的幫助
。預先感謝。
uj5u.com熱心網友回復:
為了Angular的性能,最好不要從模板中呼叫方法,這里解釋一下。簡而言之,您的模板方法將在每次更改檢測時重新運行。
在 Angular 中,管道是純粹的,這意味著除非其輸入發生變化,否則它們不會被重新運行。這個管道將是非常簡單的:
import {
Pipe。
PipeTransform.
} from '@angular/core'。
介面 PassionObj {
_id: string;
name: string;
}
@Pipe({
name: 'boldCommonInterests'。
})
export class BoldCommonInterestsPipe 實作PipeTransform {
transform(passion: string, passion2Arr: PassionObj[]) : boolean {
return passion2Arr.some(el => el.name == passion) 。
}
}
然后模板將是:
<div *ngFor="let passion of passions1"/span>>/span>
<span [class.bold-passion]="passion.name | boldCommonInterests: passions2"
>{{passion.name}}。
</span>
</div>/span>
uj5u.com熱心網友回復:
你可以使用NgStyle指令來實作這個目標,方法如下,
在你的 component.html 檔案中,
<div *ngFor="let passion of passionObject"/span>>/span>
<span [ngStyle]="{'font-weight': getFontWeight(passion.name)}"> name)}">{{passion.name}}</span>
</div>/span>
在你的component.ts檔案中。
定義函式getFontWeight,該函式接受一個字串型別的單一引數,如下所示,
getFontWeight(passionName) {
for (let i = 0; i < this. arrayOfPassions.length; i ) {
if (passionName === this.arrayOfPassions[i]['name'] ) {
return 'bold' 。
}
}
return 'normal';
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/306906.html
標籤:
