javascript - PrimeNG 从其他模块推送面包屑中的项目

标签 javascript angular breadcrumbs

我尝试制作一个基于PrimeNG面包屑的面包屑。目前我有两个不同的模块。 在根应用程序中我有这个:

export class AppComponent implements OnInit {
    ngOnInit() {     
        this.items = [];       
        this.items.push({label:'Lists', url: '/lists'});      
    }
}

在app.component.html中:

<p-breadcrumb [model]="items"></p-breadcrumb>

这没问题!

但我想从其他模块推送数据,如下所示:

export class ListItemComponent implements OnInit {
...
   ngOnInit() { 
        let listId = this._activatedRoute.params['listId'];

        this.items = [];
        this.items.push({label: `Lists ${listId}`, url: `/lists/${listId}`}); 
    }
...
}

这不是出现,ListItemComponent无权访问。

知道如何解决这个问题吗? 谢谢!

最佳答案

您可以通过共享服务解决此问题:

@Injectable()
export class BreadcrumbService {
    items: Array = [];
}

在顶级 AppComponent 模块中提供该服务。

现在您可以在AppComponent中使用它:

export class AppComponent implements OnInit {
    constructor(private _breadcrumbService: BreadcrumbService);

    ngOnInit() {     
        this._breadcrumbService.items.push({label:'Lists', url: '/lists'});      
    }
}
<p-breadcrumb [model]="_breadcrumbService.items"></p-breadcrumb>

还有另一个:

export class ListItemComponent implements OnInit {
    constructor(private _breadcrumbService: BreadcrumbService);
...
    ngOnInit() { 
        let listId = this._activatedRoute.params['listId'];

        this._breadcrumbService.items.push({label: `Lists ${listId}`, url: `/lists/${listId}`}); 
    }
...
}

关于javascript - PrimeNG 从其他模块推送面包屑中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46521750/

相关文章:

javascript - 在 OpenUI5/SAPUI5 中访问图 block 信息

angular - 在 Firebase 项目中共享 Typescript 接口(interface)

jquery - 当视口(viewport)很窄时,强制面包屑元素不会中断到另一行

magento - 如何显示 magento 联系页面面包屑?

javascript - 如何使用 C++ 使用 Emscripten 在 JavaScript 中分配变量并将它们保留在范围内?

javascript - 当 JS 代码在应用程序构建时未知时从 QML 调用 JS 函数(帽子提示 SpiderMonkey)

javascript - RxJS:我应该如何通过socket.js事件更新observable中的元素?

带有 TensorFlow 的 Angular2

angular - 如何减少 Ionic Cordova Project Start 持续时间?

magento - 如何在 magento 中删除或隐藏特定页面的面包屑