Здравейте всички, аз съм нов за anguler 2 Аз се опитвам да създадете потребителски тръба / филтър
но когато искам да се инжектира тръбата съм създаден вътре apps.ts не е възможно, както в приложеното изображение
моят компонент код:
import { Component, OnInit ,Pipe, PipeTransform} from "@angular/core";
import { Input, Injectable, ApplicationRef, ChangeDetectorRef } from "@angular/core";
import {Observable} from "rxjs/Rx"
import {Filter} from "../filter.pipe";
@Component({
selector: "app-test",
templateUrl: "./test.component.html",
styleUrls: ["./test.component.css"],
pipesp[Filter]
})
export class TestComponent implements PipeTransform {
private todos = ["wash dishes", "Clean the ground","program the site", "eat"];
constructor() {
}
transform(value: any) {
if (!value) {
return "";
}
}
}
filter.pipe.ts код:
import {Pipe, PipeTransform} from "@angular/core";
@Pipe({name:"filter"})
export class Filter {
transform(value,args){
if(!args[0]){
return value;
}else if ( value){
return value.filter(item => {
for(let key in item){
if((typeof item[key] === "string" || item[key] instanceof String) && (item[key].indexOf(args[0]) !==-1)){
return true;
}
}
});
}
}
}
test.component.html
<input type="text" [(ngModel)]="filterText">
<ul>
<li *ngFor="let todo of todos | filter: filterText ">
{{todo}}
</li>
</ul>
Отговори:
1 за отговор № 1Трябва да инжектирате тръбата на съответния модул както следва и да го използвате в компонента
declarations: [
Filter
]
0 за отговор № 2
Трябва да включите Pipe Component в Ng Module (в модула на коренния компонент) и да го използвате като глобално във всички компоненти
@NgModule({
imports: [ BrowserModule ],
declarations: [ SearchPipe ],
bootstrap: [ AppComponent ]
})
И го използвайте директно в шаблона
@Component({
selector: "my-app",
template: "<p>My name is <strong>{{ name | search}}</strong>.</p>",
})
0 за отговор № 3
Тук е решение
пиша
@Component({
pipes: [ filter ]
})
Но не
@Component({
pipes[Filter]
})