- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个包含一个动态项目的面包屑导航。像这样的事情:
Home > Category A > Subcategory 1 > XYZ
其中“类别 A”和“子类别 1”是静态的,“XYZ”是动态的。此动态标签仅在相应组件初始化后才存在,因为内容是从远程服务器加载的。层次结构来自路由器配置,其中路由具有子级。
我尝试通过 ActivatedRoute
访问当前组件,但我所能找到的只是组件名称,这在这方面没有帮助。我的下一个想法是观察 RouterOutlet 的更改,但似乎没有在更改时触发任何事件。
我模糊的想法是让组件实现这样的接口(interface):
interface Named {
readonly name: Observable<string>
}
...并以某种方式订阅这个 Observable,但为了做到这一点,我需要组件实例!
如何从 RouterOutlet 中当前显示的组件获取计算字符串?
最佳答案
我的建议是使用Route Resolver
,而不是使用组件的 ngOnInit
钩子(Hook)从服务中调用将带来必要数据的方法。
Angular 路由解析器用于在用户从一个路由重定向到另一路由时预取一些数据。新可用的页面(组件)已经具有页面中渲染所需的数据。
基本上,解析器是一种实现 Resolve
接口(interface)的服务:https://angular.io/api/router/Resolve .
来自文档:
The interface defines a
resolve()
method that is invoked when thenavigation starts. The router waits for the data to be resolved beforethe route is finally activated.
在以下示例中,我从层次结构示例中删除了一个级别,并且假设子类别是动态的。
解析器的代码为:
import { Injectable } from '@angular/core';
import { Resolve, RouterStateSnapshot,ActivatedRouteSnapshot} from "@angular/router";
import { HttpClient } from "@angular/common/http";
import { Observable, of } from "rxjs";
@Injectable({
providedIn: 'root'
})
export class DynamicSubcategoryResolver implements Resolve<any> {
constructor(private _http: HttpClient) {}
resolve(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<any> {
const subcategoryId: string | null = route.paramMap.get("subcategoryId");
// other route params are in route.paramMap
// return this._http.get("url");
return of({
breadcrumb: "(Dynamic breadcrumb) Subcategory " + subcategoryId,
foo: "bar",
bar: "baz"
});
}
}
现在,路由定义如下:
const routes: Routes = [
{
path: "",
component: HomeComponent,
data: {
breadcrumb: "Home"
},
children: [
{
path: "category-a",
component: CategoryAComponent,
data: {
breadcrumb: "CategoryA" // static breadcrumb
},
children: [
{
path: "subcategory/:subcategoryId",
component: DynamicSubcategoryComponent,
resolve: {
apiData: DynamicSubcategoryResolver
}
}
]
}
]
}
];
来自解析器的数据将在:ActivatedRoute.snapshot.data
对象中可用:
export class DynamicSubcategoryComponent implements OnInit {
constructor(private activatedRoute: ActivatedRoute) {}
ngOnInit() {
const data = this.activatedRoute.snapshot.data;
console.log("apiData: ", data.apiData);
}
}
最后,在面包屑生成器中,代码应如下所示:
const routeData: Data = route.snapshot.data;
if (routeData.breadcrumb) {
breadcrumbs.push({
label: routeData.breadcrumb,
url: url
});
} else if (routeData.apiData && routeData.apiData.breadcrumb) {
breadcrumbs.push({
label: routeData.apiData.breadcrumb,
url: url
});
}
关于带有动态标签的 Angular 面包屑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56976590/
如何使用 Meteor 实现响应式(Reactive)面包屑和铁路由器? 现在我正在寻找由 react session 变量触发的当前路径,然后在 DOM 中添加与该路由对应的每个链接与 jQuery
我想知道grails中面包屑的用法和实现。 我有一些gsp(view)页面,主页是默认页面,我有6个类别,在那6个子页面中,我需要在我的页面中显示导航路径,例如 家庭/杂货/杂货店... 家庭/财务/
我想创建一个包含一个动态项目的面包屑导航。像这样的事情: Home > Category A > Subcategory 1 > XYZ 其中“类别 A”和“子类别 1”是静态的,“XYZ”是动态的。
我想创建一个包含一个动态项目的面包屑导航。像这样的事情: Home > Category A > Subcategory 1 > XYZ 其中“类别 A”和“子类别 1”是静态的,“XYZ”是动态的。
我正在尝试在我的 React 项目中实现面包屑布局。我没有使用 router4 来呈现 URL。此时面包屑出现的样子。 Home |Test Update |Testssss |Test11111 我
我需要将树状结构更改为一些重定向(面包屑方式)。我认为问题在于我只构建了重定向的第一部分,而没有以某种方式正确回填。我一直正确地完成重定向的第一部分,但是一旦我必须重置网址,就会失败: 不想要的结果
当您使用 ul 元素来格式化面包屑(旨在获得更好的 Google 搜索结果)时,您如何定义 RDFa 标记?我问的原因是 li 元素是彼此的 sibling ,而不是 child 。我正在做类似的事情
我从 Themeisle 买了一个支持 WooCommerce 的 WordPress 模板 Zerif Pro。模板 WooCommerce 页面不显示允许用户从一个页面导航到另一个页面的面包屑。下
我想从 magento 页面中删除面包屑,尤其是产品详细信息和产品列表页面。 这可以在不更改任何代码的情况下完成吗?仅在管理面板内? 最佳答案 最好的方法是去: 系统 --> Web --> 默认页面
目前我在 vue.js 2.0 中的 BreadCrumbs 看起来像这样: Forum
我正在尝试使用 clip-path 制作面包屑路径。 #clip span { padding: 3px 20px; background-color: #666; color: whit
由于我无法在任何地方找到合适的 RDFa 示例,我想我应该在这里问一个问题。在 Google's page有使用微数据或 RDFa 标记的面包屑示例。当您单击“示例 2”旁边的“RDFa”下的“查看标
早上好,我创建了我们网站组合的前端,我需要一点帮助(头脑不合适=)) 问题是:我需要开发带有面包屑和图像的标题 我知道图像上的父类必须有 position: relative 和 childrens
我正在使用 Spring MVC + 磁贴。 现在我想构建面包屑。所以,我正在使用这个: https://github.com/pawanspace/BreadCrumb-Spring-MVC 它运行
我坚持启动 CSS 来构建面包屑,如下图链接所示。感谢您的帮助 :) 图片- http://s1015.photobucket.com/user/dbf1655/media/bred.png.html
我正在使用 ControlsFX 的 BreadcrumbBar,效果很好。我唯一的问题是将其样式设置为如下图所示。使用风景 View 时,我看到该组件只有三个类 .bread-crumb-bar、.
我想为一个页面做一种面包屑,文件夹嵌套在它的页面上。在 Sitecore 中看起来像这样: home/ main/ sub/ Folder1/ Pag
我有一个问题。我还没有找到谷歌应该如何查看产品页面面包屑的信息。尝试了一些修复,但这些都没有正常工作。例如,如果我转到产品 www.domain.com/shoes-255并在此工具中使用它 http
在 WordPress 中,我目前使用的是 Yoast's SEO Plugin显示breadcrumbs对于我的页面和帖子,在访问特定页面时工作正常。 这是我用来在我的 WordPress 模板中显
我想在用户在 magento 前端导航我自己的模块时显示面包屑,该网站已经有适当的面包屑代码,可以按照标准 magento 面包屑在其他地方使用。 我需要在我的模块中做什么来指定当前面包屑路径? 我更
我是一名优秀的程序员,十分优秀!