【发布时间】:2019-08-06 16:04:50
【问题描述】:
我有一项服务可以更改动态操作栏的标题,但是当我点击 android 上的后退按钮时,当我返回时,它会保留新标题而不是旧标题: 例如:产品 > 详细信息。当我再次回击它的详细信息而不是产品时; 我在这里缺少什么??
service.ts
import { Injectable, OnInit } from "@angular/core";
import { BehaviorSubject, Observable } from "rxjs/index";
@Injectable()
export class ActionBarService implements OnInit {
// tslint:disable-next-line: ban-types
private title = new BehaviorSubject<String>("ActionBar");
private title$ = this.title.asObservable();
constructor() {}
ngOnInit() {
this.getTitle();
}
// tslint:disable-next-line: ban-types
setTitle(title: String) {
this.title.next(title);
}
// tslint:disable-next-line: ban-types
getTitle(): Observable<String> {
return this.title$;
}
}
操作栏 xml
<!--ACTION BAR-->
<ActionBar class="action-bar roboto-regular">
<NavigationButton icon="res://menu" (tap)="openDrawer()" *ngIf="title !== 'Detail' " ></NavigationButton>
<NavigationButton icon="res://back" (tap)="goBack()" *ngIf="title === 'Product ' " ></NavigationButton>
<ActionItem ios.systemIcon="2" icon="res://shopping_black" ios.position="right"></ActionItem>
<StackLayout orientation="horizontal"
<Label class="action-bar-title" text="{{title}}" padding="10"></Label>
</StackLayout>
</ActionBar>
<!--ACTION BAR-->
操作栏.ts
import { Component, OnInit } from "@angular/core";
import { ActionBarService } from "../shared/action-bar-title";
@Component({
selector: "actionbar-place",
moduleId: module.id,
templateUrl: "./actionbar.component.html",
styleUrls: ["./actionbar.css"]
})
export class MarketPlaceComponent implements OnInit {
title: any;
constructor(private actionBarTitle: ActionBarService) {
}
ngOnInit() {
this.actionBarTitle.getTitle().subscribe((appTitle) => {
this.title = appTitle;
});
}
产品和详细信息页面.ts
ngOnInit() {
this.actionBarTitle.setTitle("My Title");
}
【问题讨论】:
-
Product和Detail应该在MarketPlaceComponent内?还是将它们用作单独的屏幕?
标签: angular nativescript nativescript-angular