我遇到了 Angular 的情况,其中路由数据解析器似乎准备正确返回数据,但解析从未发生。这特别奇怪,因为我有另一个组件的平行排列,并且在那里工作正常。
该应用程序通过 HTTP 检索有关一系列事件的数据。在 中EventListComponent
,解析器返回所有事件以响应/events
,并且组件正确显示它们。在一个EventDetails
组件中,在我目前的安排中,我仍然通过 HTTP 检索所有事件,然后在解析器中响应/events/[the event ID]
,选择应该显示其详细信息的事件。(这是来自 Pluralsight Angular Fundamentals 课程,以防它听起来很熟悉。但我倾向于观看视频,然后按照我自己的顺序完成它们,以尝试巩固我头脑中的技能。)
远程事件.service.ts
import { Injectable, EventEmitter } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { IEvent } from './event.model';
@Injectable()
export class RemoteEventService {
constructor(
private http: HttpClient
) {}
getEvents(): Observable<IEvent[]> {
return this.http.get<IEvent[]>('/api/ngfdata/events.json');
}
getEventById(id: number): Observable<IEvent> {
console.log(`In getEventById: id = ${id}`);
const emitter = new EventEmitter<IEvent>(); …
Run Code Online (Sandbox Code Playgroud) 这是我的菜单
<nav class="moduletable navigation hidden-sm hidden-xs">
<ul id="nav" class="sf-menu">
<li class="@Html.IsActive("GameVideos", "Index")"><a href="@Url.Action("Index", "GameVideos")">videogame</a></li>
<li class="@Html.IsActive("SystemRequirements", "Index")"><a href="@Url.Action("Index", "SystemRequirements")">systemReq</a></li>
<li class="@Html.IsActive("Games", "UpcommingGames")"><a href="@Url.Action("UpcommingGames", "Games")">upcomming game</a></li>
</ul>
</nav>
Run Code Online (Sandbox Code Playgroud)
并且此方法检查菜单活动
public static string IsActive(this IHtmlHelper htmlHelper, string controller, string action)
{
var routeData = htmlHelper.ViewContext.RouteData;
var routeAction = routeData.Values["action"].ToString();
var routeController = routeData.Values["controller"].ToString();
var returnActive = (controller == routeController && action == routeAction);
return returnActive ? "active" : "";
}
Run Code Online (Sandbox Code Playgroud)
当我选择菜单时它正在工作但是当我单击一个游戏并查看详细信息活动类被删除时,此代码仅适用于索引视图,但不适用于详细信息菜单