2017-02-15 49 views
0

我有一个名为组件search.componet.ts,包括一对夫妇标签:角(2.x的)变化从另一个组件标题

import {tabSearchOne} from "./tab-search-one; 
import {tabSearchTwo} from "./tab-search-two; 
import {tabSearchThree} from "./tab-search-three;  

@Component({ 
    selector: 'page-search', 
    templateUrl: 'search.html' 
}) 

export class SearchPage { 

    tabRoot1: any = tabSearchOne; 
    tabRoot2: any = tabSearchTwo; 
    tabRoot3: any = tabSearchThree; 

    title: string = 'Search'; 

    constructor(public navCtrl: NavController, public navParams: NavParams) { 

     } 

    } 

在相关模板,我有一个标题

<h3>{{title}}</h3> 

我该如何更改Tab-Components之一中的该标题?

+1

https://angular.io/docs/ TS /最新/菜谱/组件communication.html – echonax

回答

1

我不知道在哪里,你要更改标题,但你有很多不同的选择

制表组件应该修改此属性。其中最简单的可能是

<tab button (click)="title='whatever'"> 

这显然会改变该标题,当你点击相应的标签。使用服务的 可能是另一种解决方案,将其注入需要了解该标题的所有组件中,但在您的情况下可能会过度杀伤。无论如何,这种情况都是如此。

@Injectable() 
    export class TitleService { 
    title: string = 'whatever'; 
    } 

这个反正的优点还在于,如果你需要注册一些附加的行为,你可以使用一个可观察来处理标题的变化,并订阅了额外的行为它的变化。

我可以做的最后一件事情是每个组件都接收来自父项的@Input()来决定标题。

我希望这足以给你一些想法。

0

您必须创建一个SearchPage标题属性,然后使用<h3>{{title}}</h3>在页面上显示它。当你想

0

谢谢大家,我找到了解决方案。我用离子2,在我的课(SerachPage)我定义的函数:

title: string = 'Default Title'; 

... 

setTitle(tabtitle){ 
    this.title = tabtitle; 
} 

在我的标签我这样调用函数:

<ion-tab [root]="tabRoot1" (ionSelect)="setTitle('My new Title')"></ion-tab>