我试图按照不包含的成分过滤产品。不含成分的过滤剂是累积的。
这是管道:
SET @outpath = "out/";
SET @outfile = (SELECT NOW());
SET @outextension = "_EMAIL_WithoutEmail.csv";
SET @outfull = CONCAT(@outpath,@outfile,@outextension);
SELECT *
FROM `vn_db_tmp`
INTO OUTFILE @outfull
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
以下是观点:
import { Pipe, PipeTransform } from '@angular/core';
import { Product } from '../../models/product';
import { GenericFilter } from '../../store/states/results-filters-state';
@Pipe({
name: 'filterIngredients'
})
export class FilterIngredientsPipe implements PipeTransform {
transform(value: Product[] = [], ingrs: GenericFilter[] = []): any {
const activeIngrs = ingrs.filter((ingr: GenericFilter) => ingr.selected);
if (!activeIngrs.length) {
return value;
}
return value.filter((product: Product) =>
activeIngrs.find(ai => product.filters.ingredients.some(a => a.id !== ai.id))
|| product.filters.ingredients.length === 0
);
}
}
参考模型:
<app-product-preview *ngFor="let product of (products$ | async) |
filterIngredients: (ingredientsFilter$ | async) || []>
</app-product-preview>
当按一种成分过滤时它起作用,但是当它有一种以上时会中断。我知道使用某种方法是问题,因为我只是在其他管道中重复使用代码来累积包含属性但是我不知道要使用什么代替非包含的...