【发布时间】:2019-02-02 08:12:42
【问题描述】:
我正在通过教程修改我的角度:
https://www.youtube.com/watch?v=z4JUm0Bq9AM
https://coursetro.com/posts/code/154/Angular-6-Tutorial---Learn-Angular-6-in-this-Crash-Course
我的侧边栏有这两个文件:
sidebar.component.ts
import { Component, OnInit } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';
@Component({
selector: 'app-sidebar',
templateUrl: './sidebar.component.html',
styleUrls: ['./sidebar.component.scss']
})
export class SidebarComponent implements OnInit {
currentUrl: string;
constructor(private router: Router) {
router.events.subscribe((_: NavigationEnd) => this.currentUrl = _.url);
}
ngOnInit() {
}
}
sidebar.component.ts
<nav>
<ul>
<li>
<a routerLink="" [class.activated]="currentUrl == '/'">
<i class="material-icons">supervised_user_circle</i>
</a>
</li>
<li>
<a routerLink="posts" [class.activated]="currentUrl == '/posts'">
<i class="material-icons">message</i>
</a>
</li>
</ul>
</nav>
问题是currentUrl 没有被传递给视图。我已经检查并再次检查了我的代码是否与视频中显示的完全一致,并直接从 tut 的文本版本中粘贴,但无济于事。
我已经确认 1,它正在被设置(通过 console.log)和 2,它没有被传递到视图(通过使用 {{ currentUrl }} 将变量转储到页面)。
如果有人能指出问题所在,我将不胜感激。
【问题讨论】:
-
您能否创建一个 StackBlitz 来重现该问题?在您提供的代码中,如果您要在模板中使用
{{currentUrl}},则没有理由不显示它 -
当我记录事件时,最新的总是未定义的
-
是的,我也发现了,我尝试仅在
_.url为真时设置它,但它仍然没有传递给视图。 -
我也试过禁用
router.events.subscribe((_: NavigationEnd) => this.currentUrl = _.url);并直接设置变量,在视图中仍然是空的。
标签: javascript angular javascript-framework