仅显示来自 Angular 10 和 ng-template 中博客的相关条目
Show only relevant entries from a Blog in Angular 10 with ng-template
我有一个用 Strapi 制作的博客后端,您可以在其中添加一些 content-types,例如标题字段、描述字段和内容字段。我还有一个布尔值 content-type 来设置博客是否相关。我在 Angular 中设置了一个 ngFor 来显示我所有的博客条目;但我只想展示相关的。实际上,我正在使用 ngIf 指令显示相关项,但是 Angular 为 non-relevant 条目留下了一些空白。有什么办法可以去除这些空白??我想一定是 ng-template.
这是我的 html,我在其中设置了 ngFor:
<div class="col-md-6 col-xs-12" *ngFor="let data of datas; index as i"accesskey="">
<div class="banner-wrapper" *ngIf='data?.relevante==True; else relevante'>
<ng-template #myrelevante></ng-template>
<a [routerLink]="['/pagina',data.id]" title="Leveling up in CSS">
<div class="banner-wrapper-content">
<h1 class="h2">{{ data.title }}</h1>
<!-- <span class="category-tag category-tag-white"></span> -->
<h3 class="mylittle">{{ data.description }}</h3>
<time datetime="2016-01-18" class="">{{ data.fecha | date:'dd/MM/yyyy' }}</time>
</div>
</a>
<img class="img-fluid"
src="http://localhost:1337{{ data.image.url }}"
alt="foto"
width="100%"
data-rjs="2"
/>
</div>
</div>
而且,这是一张显示不相关博客条目的空白区域的图片:
我也分享我的ts文件:
import { Component, OnInit } from '@angular/core';
import { Meta, Title } from '@angular/platform-browser';
import { StrapiService } from '../../../services/strapi.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-blog',
templateUrl: './blog.component.html',
styleUrls: ['./blog.component.scss']
})
export class BlogComponent implements OnInit {
datas:any=[];
errores:string="";
totalLength:any;
page:number = 1;
constructor(
private title: Title,
private meta: Meta,
public strapiserv:StrapiService,
private router: Router
) { }
ngOnInit(): void {
this.title.setTitle('Blog');
this.meta.updateTag({
name: 'description',
content: 'Publicaciones más relevantes del mundo cloud, transformación digital y el mundo empresarial'
})
this.meta.updateTag({
name: 'keywords',
content: 'Transformacion digital, Cloud, La nube, GCP, trabajo remoto, eSource capital, migración de datos, CSS, 2021, Navent, Google Cloud, Microsoft, Ciberseguridad'
})
this.strapiserv.getData().subscribe(res=>{
this.datas= res as string[];
this.totalLength = res.length;
}, error =>{
console.log(error);
if(error.status == 0){
this.errores="Código del error: "+error.status+" \n Ha ocurrido un error del lado del cliente o un error de red.";
}else{
this.errores="Código del error: "+error.status+"\n\n"+error.statusText;
}
})
}
filterRelevante(datas: Data[]) : Data[] {
return datas.filter(data => data.relevante)
}
}
您可以编写一个函数来获取数据数组并returns对其进行过滤。
在你的 .ts 中:
filterRelevante(datas: Data[]) : Data[] {
return datas.filter(data => data.relevante)
}
然后您只需使用该函数将 'data' 包装在您的模板中。
在你的html中:
<div
class="col-md-6 col-xs-12"
*ngFor="let data of filterRelevante(datas); index as i"accesskey="">
我只是假设你这里的数据类型是Data,很可能不是这样。这也是一个糟糕的名字,但我喜欢用打字稿输入东西,所以我建议为你的数据编写你自己的接口并正确命名,而不是只使用任何。
我有一个用 Strapi 制作的博客后端,您可以在其中添加一些 content-types,例如标题字段、描述字段和内容字段。我还有一个布尔值 content-type 来设置博客是否相关。我在 Angular 中设置了一个 ngFor 来显示我所有的博客条目;但我只想展示相关的。实际上,我正在使用 ngIf 指令显示相关项,但是 Angular 为 non-relevant 条目留下了一些空白。有什么办法可以去除这些空白??我想一定是 ng-template.
这是我的 html,我在其中设置了 ngFor:
<div class="col-md-6 col-xs-12" *ngFor="let data of datas; index as i"accesskey="">
<div class="banner-wrapper" *ngIf='data?.relevante==True; else relevante'>
<ng-template #myrelevante></ng-template>
<a [routerLink]="['/pagina',data.id]" title="Leveling up in CSS">
<div class="banner-wrapper-content">
<h1 class="h2">{{ data.title }}</h1>
<!-- <span class="category-tag category-tag-white"></span> -->
<h3 class="mylittle">{{ data.description }}</h3>
<time datetime="2016-01-18" class="">{{ data.fecha | date:'dd/MM/yyyy' }}</time>
</div>
</a>
<img class="img-fluid"
src="http://localhost:1337{{ data.image.url }}"
alt="foto"
width="100%"
data-rjs="2"
/>
</div>
</div>
而且,这是一张显示不相关博客条目的空白区域的图片:
我也分享我的ts文件:
import { Component, OnInit } from '@angular/core';
import { Meta, Title } from '@angular/platform-browser';
import { StrapiService } from '../../../services/strapi.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-blog',
templateUrl: './blog.component.html',
styleUrls: ['./blog.component.scss']
})
export class BlogComponent implements OnInit {
datas:any=[];
errores:string="";
totalLength:any;
page:number = 1;
constructor(
private title: Title,
private meta: Meta,
public strapiserv:StrapiService,
private router: Router
) { }
ngOnInit(): void {
this.title.setTitle('Blog');
this.meta.updateTag({
name: 'description',
content: 'Publicaciones más relevantes del mundo cloud, transformación digital y el mundo empresarial'
})
this.meta.updateTag({
name: 'keywords',
content: 'Transformacion digital, Cloud, La nube, GCP, trabajo remoto, eSource capital, migración de datos, CSS, 2021, Navent, Google Cloud, Microsoft, Ciberseguridad'
})
this.strapiserv.getData().subscribe(res=>{
this.datas= res as string[];
this.totalLength = res.length;
}, error =>{
console.log(error);
if(error.status == 0){
this.errores="Código del error: "+error.status+" \n Ha ocurrido un error del lado del cliente o un error de red.";
}else{
this.errores="Código del error: "+error.status+"\n\n"+error.statusText;
}
})
}
filterRelevante(datas: Data[]) : Data[] {
return datas.filter(data => data.relevante)
}
}
您可以编写一个函数来获取数据数组并returns对其进行过滤。
在你的 .ts 中:
filterRelevante(datas: Data[]) : Data[] {
return datas.filter(data => data.relevante)
}
然后您只需使用该函数将 'data' 包装在您的模板中。
在你的html中:
<div
class="col-md-6 col-xs-12"
*ngFor="let data of filterRelevante(datas); index as i"accesskey="">
我只是假设你这里的数据类型是Data,很可能不是这样。这也是一个糟糕的名字,但我喜欢用打字稿输入东西,所以我建议为你的数据编写你自己的接口并正确命名,而不是只使用任何。