【发布时间】:2020-07-03 03:22:38
【问题描述】:
在我的项目中,我有两个组件,例如内容和视图。我正在使用 service.ts 来连接(扩展)这两个组件。在内容组件中,我有一个方法。当我调用该方法时,一个 div 将显示在视图组件中。两者都使用 service.ts 进行交互。 我尝试了布尔方法,但它不起作用。
内容组件:
<button (click)="filterService.filterClicked()"
[class.active]="filterService.filterChanged"
id="filterDropdown" type="button"
class="dropdown-toggle btn btn-clear-default job-filter">
<i class="fa fa-funnel-thin mr-10"></i>
</button>
内容组件ts:
import {Injectable} from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class FilterService {
constructor(
public filterService: FilterService) {
}
}
service.ts:
import {Injectable} from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class FilterService {
public filterShow: boolean;
filterClicked(){
this.filterShow = !this.filterShow;
}}
查看组件:
<div *ngIf= "filterService.filterShow">
content
</div>
查看组件ts:
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { FilterService } from "../../services/filter.service";
@Component({
selector: 'jobs-sub-header',
templateUrl: './sub-header.component.html',
providers: [ FilterService ]
})
export class SubHeaderComponent implements OnInit {
constructor(
private filterService: FilterService) {
}
如果有人知道,请在这里分享。我试过了,还是不行。
【问题讨论】:
-
尝试在SubHeaderComponent构造函数中将filterService改为public
-
是的...试过但没有任何效果。
-
能否提供stackblitz.com上的示例项目进行测试?
-
@NajiMakhoul 我在这个 url-stackblitz.com/edit/angular-wvwcz8?embed=1&file=src/app/… 中尝试了同样的事情。但在 stackblitz 中它工作正常。但对我来说它不起作用。
标签: typescript angular8