【发布时间】:2021-06-17 05:56:26
【问题描述】:
我正在尝试根据服务变量应用过滤器来搜索项目,该服务变量使用来自该服务的输入进行更新。但我只是从组件中的服务中获取初始值
服务 HTML(我输入的任何内容都会正确分配给变量 searchInput):
<input [value]="searchInput" (keyup)="searchInputChange.next(searchFilterService.applyFilter($event.target.value))">
Service TS(之所以叫组件,是因为我已经有一个同名atm的服务了):
export class SearchFilterComponent {
searchInput: string = 'test';
searchInputChange: Subject<string> = new Subject<string>();
constructor(
public searchFilterService: SharedSearchFilterService) {
this.searchInputChange.subscribe((value) => {
this.searchInput = value
});
}
getSearchInput(): string {
return this.searchInput;
}
}
过滤服务 TS:
@Injectable()
export class SharedSearchFilterService {
applyFilter(filterValue: string) {
if (filterValue) return filterValue;
else return ''; // I need this to avoid getting 'undefined'
}
}
组件 HTML(这里我得到的初始值是“test”,然后它永远不会从服务中获取新值):
<ng-container *ngIf="searchFilterService.licenceFilter(item, service.getSearchInput())">
【问题讨论】:
标签: angular typescript subject