【发布时间】:2017-07-05 21:35:24
【问题描述】:
我在 2 个差异组件中使用了一项服务:一个在分页按钮上,第二个在侧边栏中。这两个组件处于同一级别。 问题是按钮组件上的方法有效,但如果我在侧边栏上使用它们就不起作用。
服务
public navigate(action: string) {
if (typeof this.ACTIONS[action] === 'undefined')
return;
let shift = this.ACTIONS[action];
this.setCurrent(shift);
const curr = this.getCurrent();
this.activeIndex = curr.index;
return this.router.navigate([curr.name]);
}
public setDisableFirst() {
const curr = this.getCurrent();
if(curr.index == 0) {
return true;
}
}
public setDisableLast() {
const curr = this.getCurrent();
return ((curr.index + 1) == (this._pages.length)) ? true : false;
}
public setActiveIndex() {
const curr = this.getCurrent();
return 'done-' + curr.index;
}
按钮
public disableFirst() {
return this.PrevNextService.setDisableFirst();
}
public disableLast() {
return this.PrevNextService.setDisableLast();
}
<button type="button" (click)="navigate('PREV')" [disabled]="disableFirst()">
<button type="button" (click)="navigate('NEXT')" [disabled]="disableLast()">
侧边栏
public activeClasss() {
return this.PrevNextService.setActiveIndex();
}
<div class="list-group-wrapper" [ngClass]="activeClasss()">
如果我在以下方法中控制台登录服务 const curr = this.getCurrent();:navigate、setDisableFirst、setDisableLast,当我单击下一步或从按钮返回时,我会得到准确的页码(1、2、3 等)组件。
Service 的最后一个方法 setActiveIndex 使用与上述方法相同的变量。在这里,在服务中,如果控制台日志const curr = this.getCurrent(); 我只得到我现在的第一(1)页。如果我继续单击下一个或上一个按钮,则此 const 保持不变(1)。
我使用 Angular 4。有人可以告诉我为什么会出现这种行为吗?
【问题讨论】:
-
你的
this.getCurrent()方法是什么样的? -
给我我所在的实际页面。在构造函数中我有
this._current = this._pages.find((page) => { return this.router.url === page.name; });,然后我声明了函数:public getCurrent() { return this._current; } -
_pages.find() 有什么作用?请提供更多相关代码。
-
_pages 是一个数组,使用 find 检查 url 是否与 _pages 数组中的页面名称相同。给我一些类似的东西:
{name: "../page1", index: 0} -
如需帮助,请提供更多相关代码。
标签: angular