问题标签 [angular2-routing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - Angular 2:“...”的路由生成器未包含在传递的参数中
因此,我的 AuthenticationService 中有以下代码。检查登录凭据后,用户会被重定向到他们的个人资料:
authentication.service.ts
:
一切都很好,但是自从我在 中引入了一些子路由后ProfileComponent
,我遇到了一些错误。首先,这是我的带有 RouteConfig 的 AppComponent:
app.ts
:
如您所见,ProfileComponent 内部定义了一些新路由。如此处所示:
ProfileComponent.ts
:
所以这里的问题是,在我在 ProfileComponent 中引入一些子路由之前,一切正常。用户被重定向,用户名出现在 URL 中,一切都很好。但是由于我添加了这些子路由,因此出现以下错误:
"Route generator for 'username' was not included in parameters passed."
如果有人可以帮助我,那就太好了!提前致谢!
angular - Angular2 获取当前路由的别名
我可以使用 location.path() 获取当前路线的路径,例如:/about、/、/news。但是我怎样才能获得它的别名(路由定义中的“as”部分)?
可能吗?
angular - Angular2:路由器劫持
想象一下,我们有一个受某种外部登录保护的视图。这是工作流程
- 用户尝试访问该页面。
- 用户被重定向到外部登录。
- 用户执行登录。
- 用户被重定向到受保护的页面。
我尝试的第一件事是设置一个钩子routerOnActivate
来检查身份验证并将用户重定向到执行重定向的登录视图。这个登录视图也是用户在登录后结束的视图,所以我需要再次重定向到受保护的页面。
- routerOnActivate HomeComponent -> 导航([“登录”])
- routerOnActivate LoginComponent -> window.location.href = redirectUri
- ...
- routerOnActivate LoginComponent -> 设置身份验证;导航([“主页”])
然而,在某些情况下,存在竞争条件,在第 2 步或第 4 步,当它再次尝试导航时导航仍未完成,最终出现错误:
说错误是重现和调试的麻烦,但最后我发现它是针对这种竞争条件的。
所以,问题是......我怎样才能确定只有在所有导航完成后才触发导航?我应该改用routerCanActivate
钩子吗?
angular - Angular 2:从父组件获取 RouteParams
如何从父组件获取 RouteParams?
App.ts
:
然后,在 中ParentComponent
,我可以轻松获取我的用户名参数并设置子路由。
Parent.ts
:
但是,如何在这些子组件中获得相同的“用户名”参数?做与上面相同的技巧,不这样做。因为这些参数是在 ProfileComponent 中定义的?
angular - 如何在 angular2 中注入位置?
我认为注入 Location 的方式与注入 Http 的方式相同。但是,我的应用程序中断 - 如果我在最后一行取消注释“公共位置:位置”,则页面不会呈现。据我所见,我有正确的导入和提供者数组:
在我的 index.html 中,我有以下行:
在我的引导代码中,我有:
不确定我是否遗漏了某些内容或当前版本已损坏。如果是第一种情况,我错过了什么?
angular - 使用 HTML5 路由时 Angular 2 的路由器是否损坏?
这个全新的路线语法听起来不错,现在我认为它确实如此。我放弃了让它工作的尝试,在这里我注意到甚至 Angular 2 页面中的主要示例都不起作用。如果您打开实时示例并尝试它,只需单击它就可以了,您可以看到 url 中的路径发生了变化,但它只是更改了字符串,如果您复制您的 url 并发送它,路径并不真正存在对于某人,他们将收到以下错误:
地狱,即使你只是刷新页面,你也会得到同样的错误。
如果您想重现该问题,请打开此 URL:
https://angular.io/resources/live-examples/tutorial/ts/plnkr.html
单击实时预览右上角的“在单独的窗口中启动预览”按钮,等待它加载页面,当您看到 URL 更改为以下内容时:
http://run.plnkr.co/KMzM8hkaCyhlnf3b/dashboard
执行 F5 刷新页面,您将收到错误消息。
这是一个错误,它应该工作的方式,还是他们甚至没有尝试过的东西?他们是否已经从一个糟糕的路由器实施重新开始,或者我只是完全迷失了我如何让它工作?请指教 !
我猜我最好使用主题标签实现。
angular - 如何在 url 路径中没有附加斜线的情况下实现 angular2 嵌套组件路由
我正在使用 angular2 构建一个单页应用程序,它需要根据应用程序的路由呈现不同的应用程序模板。在最高级别,它应该能够在主应用程序模板和应用程序的管理模板之间切换。
路由规则:
- 如果 url 路径以 /auth 开头,则它由 AuthApp 处理
- 如果它以其他任何内容开头,则应由 MainApp 处理
执行:
为了实现这一点,我有一个最高级别的组件应用程序,它将责任委托给 AuthApp 或 MainApp,就像这样。
然后每个子应用程序(例如 AuthApp、MainApp)都有自己的路由定义,例如这样。
从功能上和从设计的角度来看,这很好用!
问题:
在主应用程序中,应用程序的路由配置未指定路径(例如/...
=> MainApp),我不想要嵌套的 url 路径。例如,如果您通过应用程序 (routerLink) 导航到 CurrentVacancys,它会更新 url 并在前面添加一个多余的正斜杠。.../#//current-vacancies
当我希望它读取 url 路径时,它现在看起来像这样.../#/current-vacancies
。
当您.../#/current-vacancies
在地址栏中键入时,应用程序路由实际起作用,它会正确转换。然而,通过应用程序 routerLink 指令导航会添加不需要的正斜杠。
我从逻辑上理解为什么会发生这种情况,委托给 MainApp 的根组件的路径为“/”,并且它与它的子组件连接在一起形成一个完整的 url 路径。但在这种情况下,不希望有额外的斜线。任何想法如何删除它,或以某种方式覆盖此行为。
顺便说一句,我已经考虑将 MainApp 组件路由移动到最顶层,虽然这确实解决了我报告的 url 路径问题,但它不允许我在顶层切换模板。
总之
请帮助我,要么
- 如何删除
/
主应用程序路线上不需要的"preferred option"
,或 - 如何设计应用程序以具有可切换的顶级模板和嵌套组件路由。
谢谢
angular - 使用嵌套路由定义时如何从 angular2 ComponentInstruction 获取完整的 urlPath?
我正在使用带有嵌套路由定义的 angular2,例如/auth/login
实际上是按路径段分层拆分,父组件将路由匹配/auth/...
到 Auth 组件,而 Auth 组件依次处理/login
等/reset
。
我遇到的问题是,当我ComponentInstruction
在 custom 中截获路由时RouterOutlet
,组件指令仅包含它自己的路径段。
使用上面的例子,组件指令 urlPath/auth/login
只包含login
它的 urlPath 值。我真正想要的是访问完整的 urlPath,或者某种可靠地重建此路径的方法?
redirect - 使用Angular2,如何在登录重定向之前重定向到以前的url
使用 Angular2 创建单页应用程序,我在自定义中拦截未经身份验证的用户对非公共路由的访问,RouterOutlet
并将它们重定向到登录视图。成功登录后,我想将用户重定向到他们最初请求的视图,而不是默认视图。
我注意到Router
有一个renavigate()
功能可以导航到最后一条成功的路线,但最后一条成功的路线是/auth/login
而不是最初请求的 url。
基本上:如何访问或确定先前请求的 url?
我真的不想求助于传递查询字符串参数,除非我真的必须这样做。history
理想情况下,作为组件的一部分访问集合会很好Router
,类似于backbone.history
!
angular - 具有嵌套状态的Angular2路由
我有一个登录页面,它将显示用户(默认情况下)和“注册”组件,这是一组允许他们注册的输入字段。
对于返回用户,我希望他们按原样查看登录页面,然后单击“登录”并将注册组件替换为登录组件。我不希望 URL 改变,它应该保持 '/'。
对于 ui-router 我可以做嵌套状态,但不确定 Angular2 的路由器是否支持它?
应用程序.ts
登陆.ts
着陆组件的路径是否需要不同?