0

그래서 별도의 구성 요소에서 요소를 전환하는 동안, 이온 탭 구성 요소에서 부울 값을 변경하는 함수를 실행하면서 지금까지이 작업을 수행했습니다.서비스를 사용하여 개별 구성 요소로 토글 링 하시겠습니까?

//App.module.ts - 간결

import { AppGlobals } from './globals'; 

@NgModule({ 
    providers: [AppGlobals] 
}) 

//Globals.ts을 위해

import { Injectable } from '@angular/core'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/share'; 
import 'rxjs/add/operator/startWith'; 
import { BehaviorSubject } from 'rxjs/BehaviorSubject'; 

@Injectable() 
export class AppGlobals { 
    // use this property for property binding 
    public showSearch:BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false); 

    setShowSearch(search){ 
     this.showSearch.next(search); 
     console.log(search); 
    } 
} 

// Tabs.ts

import { AppGlobals } from '../../app/globals'; 

constructor(private _appGlobals: AppGlobals) { 
    this._appGlobals.showSearch.subscribe(value => this.search = value); 
} 

toggleSearch() { 
    this.search = !this.search; 
    console.log(this.search); 
} 

을 잘라 //Tabs.html

(ionSelect)="toggleSearch();" 

는 //이 그러나이, 내가 값을 그러나 글로벌 "showSearch"을 전환하고있어 작동 표시되지 않는 별도의 구성 요소

<div *ngIf="search" [ngClass]="{'slideInRight':showSearch, 'fadeOut':!showSearch}" class="search-filters animated"> 

내에서 일부 HTML에 동일하게 유지 보인다. 두 요소간에 요소 토글을 수행하는 올바른 방법은 무엇입니까?

아무런 도움이 필요하지 않습니다.

+0

@VladuIonut는 차이를 불행하게 나타나지 않는다 – Alsh

답변

0

당신의 Tabs.ts 이벤트를 방출 할 때 다른 구성 요소에 toggleSearch() 메서드 호출

toggleSearch() { 
    this.search = !this.search; 
    console.log(this.search); 
    this._appGlobals.showSearch.next(this.search); 
} 

import { AppGlobals } from 'path/to/app/globals'; 
@Component({...}) 
export class SubComponent implements OnInit { 

    showSearch: boolean = false; 

    constructor(private _appGlobals: AppGlobals) { 

    } 

    ngOnInit() { 
     this._appGlobals.showSearch.subscribe(value => this.showSearch = value); 
    } 

} 

하위 템플릿

<div *ngIf="showSearch">content</div> 
+0

감사합니다. 거의 효과가 있습니다. 이제 요소가 보이지만 즉시 숨어있는 것처럼 보입니다. 어떤 아이디어? 내 질문에 HTML의 나머지 부분을 추가했습니다. – Alsh

+0

스크래치, 나는 그것을 고쳤다. 나는 showSearch가 아닌 html로 모든 것을 검색 할 필요가 있었다. 당신의 도움을 주셔서 대단히 감사합니다. – Alsh

+0

당신은 오신 것을 환영합니다. –