将类型安全的路由数据传递给角度 2 中的路由

2024-03-17

在我的路由模块中,我以这种方式传递数据。

const routes: Routes = [
  { path: '', redirectTo: 'login', pathMatch: 'full' },
  { path: 'login', component: LoginComponent, data: { ShowTopBar: true, showSideBar: false} },
  { path: 'error', component: ErrorComponent, data: { ShowTopBar: true, showSideBar: false}}

];
export const AppRoutingModule: ModuleWithProviders = RouterModule.forRoot(routes);

为了使数据类型安全,我创建了一个RouteData类将持有ShowTopBar and ShowSideBar值并通过构造函数初始化它们。

export class RouteData {
constructor(showTopbar: boolean, showSideBar: boolean) {
  this.ShowSideBar = showSideBar;
  this.ShowTopBar = showTopbar;
}
 public ShowTopBar: boolean;
 public ShowSideBar: boolean;
}

现在,我通过以下方式更改了路由的声明:

const routes: Routes = [
  { path: '', redirectTo: 'login', pathMatch: 'full' },
  { path: 'login', component: LoginComponent, data: new RouteData(false, false) },
  { path: 'error', component: ErrorComponent, data: new RouteData(true, false)}

];

编译时出现以下错误:

静态解析符号值时遇到错误。通话功能 'RouteData',不支持函数调用。考虑更换 function 或 la mbda 以及对导出函数的引用, 解析符号 AppRoutingModule

我的问题是我们怎样才能通过RouteData以类型安全的方式传递给路由,以便我可以利用类型安全。


你可以做下面的事情,

延伸路线从@angular/router并更新数据类型,如下所示,

export interface RouteData {
  ShowTopBar: boolean;
  ShowSideBar: boolean;
}

interface CustomRoute extends Route {
  data?: RouteData;
}

将路由类型更新为CustomRoute[] from Routes

const routes: CustomRoute[] = [
  { path: '', redirectTo: '/home', pathMatch: 'full' },
  { path: 'home', component: HomeComponent, data: { ShowSideBar: true, ShowTopBar: true } }
];

现在您可以传递类型安全数据,见下文,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将类型安全的路由数据传递给角度 2 中的路由 的相关文章

随机推荐

  • 如何为专有语言构建 AST?

    我试图了解如何为专有语言构建 AST 我需要构建一个 AST 以便我可以输入我的规则和指南来检查源代码中可能存在的错误 如何构建 AST 有没有任何书籍 文章可以帮助我入门 龙的编译器书有帮助吗 请注意 我没有 CS 背景 Thanks 这
  • C 中的作用域可以用括号括起来并返回一个值吗? [复制]

    这个问题在这里已经有答案了 我查了定义MIN在 Mac OS X 上 发现了这个 define MIN A B typeof A a A typeof B b B a lt b a b 一开始并不那么明显 但是当它扩展时 它就变成了对我来说
  • RestEasy:找不到类型为 java.util.ArrayList 媒体类型为 application/json 的响应对象的 MessageBodyWriter

    消息 无法找到类型为响应对象的 MessageBodyWriter 媒体类型的 java util ArrayList application json 描述 服务器遇到内部错误 找不到 MessageBodyWriter 用于类型为 ja
  • 阻止浏览器加载我的网页的未更新的缓存版本。

    Problem 我的主页上有 8 张图片 可以通过上传页面进行更改 更改 8 个图像后 用户导航回主页以查看新图像 但是 不会显示新图像 旧图像仍然存在 直到刷新浏览器 我猜测这是因为浏览器正在缓存页面然后重新加载缓存的页面 到目前为止我已
  • backbone.js 中的绑定和 _.bindAll

    我对绑定及其目的感到困惑 bind All在backbone js中 下面是创建模态视图的工作代码 modal并渲染从后端获取的评论 首先 在下面的代码中 我在initialize功能 bindAll this render renderC
  • `parse_rackup_file':rackup 文件 (config.ru) 不可读 (ArgumentError)

    我的 procfile 中有这个 web bundle exec unicorn p PORT c config unicorn rb 启动服务器后 我收到以下错误消息 foreman start 12 29 20 web 1 starte
  • 原始值的映射替代方案

    我对我的应用程序进行了一些分析 结果之一表明堆上大约 18 的内存被 类型的对象使用Double 事实证明这些对象是中的值Maps 我不能使用原始类型 我的推理是原始类型double比它的对象消耗更少的内存Double 有没有一种方法可以拥
  • 垃圾收集器是否跟踪所有 Python 对象?

    我正在尝试调试内存泄漏 请参阅问题Python Twisted 中的内存泄漏 它在哪里 https stackoverflow com questions 4078084 memory leak in python twisted wher
  • 处于咕噜模式的猪

    我在windows中安装了cygwin hadoop和pig 配置看起来不错 因为我可以在批处理和嵌入模式下运行 Pig 脚本 当我尝试以 grunt 模式运行 pig 时 发生了一些奇怪的事情 让我解释 我尝试运行一个简单的命令 例如 g
  • 如何使用 Microsoft Graph 或 Office 365 REST API 从 Outlook 获取所有任务?

    我正在构建一个 Web 应用程序 需要从使用 Outlook 任务的组织中获取所有任务 可以使用 Microsoft Graph 或 Office 365 REST API 来完成此操作吗 我在这两个服务的文档中都没有发现任何可以执行类似操
  • Google 文档查看器返回 204 响应,不再工作,有替代方案吗?

    更新时间 2016 年 11 月 16 日上午 9 53 美国东部时间 尽管 Google 声称已经 修复 了该问题 但许多人仍然看到 204 回复 当我自己测试文档加载 50 次时 其中 3 次 Google 返回了 204 响应 请访问
  • 重写使用 from...import 的模块方法

    我在重写方法时遇到问题from import语句被使用 一些例子来说明问题 a py module def print message msg print msg b py module from a import print messag
  • Stackoverflow 和函数指针

    我对此很迷茫 希望这里有人能提供帮助 我的应用程序由数百个评估数字代码的函数组成 每个函数的源代码在 5MB 范围内 并且我使用std map到函数指针 显然发生的情况是 当我尝试将参数传递给其中一个函数 通过指向它的指针访问 时 出现堆栈
  • Unity3d 5 WavePro 动态网格碰撞器

    我使用 Water4Advance 在 Unity3d 5 0 中模拟海浪 我在运行时使用 Gerstner Displace 使我的飞机发生位移 我看到网格如何变形 并向其中添加一个 MeshCollider 并且我喜欢在运行时刷新此对撞
  • 如何引用 DNX Core 5.0 (ASP.NET 5) 中的执行程序集?

    我正在从 NET 3 5 4 5 移植一些代码 在我的程序集中 我有一些从当前正在执行的程序集中读取资源的代码 然而 GetExecutingAssembly 不是一个方法Assembly输入 DNX core 5 0 var xsdStr
  • 最长的字母子串 - 从哪里开始

    我正在研究流行的麻省理工学院课程中的 最长字母子串 问题 我已经阅读了很多关于如何编码的信息 但我真的很难在概念上实现飞跃 前面的手指练习并不太难 我想知道是否有人知道任何材料可以真正打破这个问题中所采用的问题解决方法 我试着拿出笔和纸 但
  • 在 Eclipse 中粘贴多行 Java 字符串 [重复]

    这个问题在这里已经有答案了 不幸的是 Java 没有多行字符串文字的语法 如果 IDE 可以轻松使用类似的结构 那就没问题了 String x CREATE TABLE TEST n A INTEGER NOT NULL PRIMARY K
  • PHP/mysqli:使用 mysqli_stmt_bind_param() 插入 IP 地址

    我有一个数据库表 其中包含一个无符号整数字段来存储访问者的 IP 地址 user ip INT 10 UNSIGNED DEFAULT NULL 下面是尝试存储 IP 地址的 PHP 代码片段 ipaddr SERVER REMOTE AD
  • 使用 SMARTY 截断 HTML 格式的文本

    我有一个使用随机 HTML 代码格式化的变量 我称其为 text 我把它截断了 该值例如 div Lorem i ipsum b dolor span sit span amet b con i elit div 如果我截断文本的前 30
  • 将类型安全的路由数据传递给角度 2 中的路由

    在我的路由模块中 我以这种方式传递数据 const routes Routes path redirectTo login pathMatch full path login component LoginComponent data Sh