将类型安全的路由数据传递给角度 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 中的路由 的相关文章

  • 添加滚动到顶部按钮(Ionic 2 | Typescript)

    大家好 我正在尝试添加 滚动到顶部按钮 实现以下内容 1 当用户向下滚动时显示按钮 2 当用户向上滚动时隐藏按钮 3 如果点击该按钮 则滚动到顶部并隐藏该按钮 关于如何使其正确的任何建议 多谢 简化scrollToTop from adri
  • 打字稿日期格式

    我正在使用角度 2 4 我怎样才能将日期格式化为这个2017 10 03T14 51 06 078Z 下面是我的代码 public today number Date now console log today time this toda
  • TS1128:预期声明或声明(文件结尾)

    我正在开发一个 TypeScript React 项目 刚刚习惯它 已经一年没有写过 React 了 等等 并且遇到了一个问题 当我编写此组件时 我遵循了我找到的一些文档 但我在此文件末尾收到 TS1128 预期声明或声明 错误 我无法弄清
  • Typescript 中的子类化

    我在 Typescript 中有一个存储类 它实现了Storage界面 说MyStorage 但它的方法太多了 所以我想用它来代替MyStorage getCandy MyStorage Candies getCandies 该结构可能看起
  • 与 webpack 捆绑后,无法读取枚举的未定义属性

    我有一个 React 库 我想使用 Webpack 来构建它 该库是使用 Typescript 编写的 似乎一切正常 但由于某种原因枚举却不起作用 当我将库安装到我的 React 应用程序中时 我发现Cannot read properti
  • Ruby on Rails - 向所有路由添加 ID 参数

    我想知道在 Rails 路由中实现以下功能的最佳方法是什么 场景 一个网站 用户注册账户 gt accountID 账户 成为网站内的主要实体 例子 https basecamp com ID https basecamp com ID 将
  • 在 MVC 4 中使用路由更改 URL 参数

    我的几个 API 函数允许使用名为 attribute 和 attributeDelimiter 单数 的参数 这意味着预期的 URL 格式为 SomeController SomeAction aaa bbb attribute ccc
  • 如何在 TypeScript 中获取类方法的返回类型

    在较新的 TypeScript 版本中 我想是 2 8 以后 我可以轻松获取函数的返回类型 function f return hi type MyType ReturnType
  • 如何为 Angular 4、5 中的动态元素分配哈希 ID ref id

    如果我的问题很愚蠢 我很抱歉 我有 30 多个静态 ng container 和一些独特的静态 hashtagID 但我想在 ngFor 的帮助下动态创建它们 public lists food book cook 期望输出
  • 使用字符串枚举来扩展 keyof

    我在理解使用字符串枚举来索引类型时的行为时遇到了一些困难 似乎有时 TS 会识别字符串枚举的值是keyof某些类型 有时则不然 为了显示 enum Key FOO foo type MyObj foo string 因此 类型属性的枚举 即
  • JS Sapper:将数据发布到服务器(正确的方法?)

    如何使用 Sapper JS lib 正确地将数据发布到服务器 说 我有一个页面 板编辑器 我可以在其中从用 SVG 编写的六边形网格中选择 取消选择图块 并在存储数组中添加 减去十六进制坐标 然后用户填写一个表单 其中包含板 名称 作者和
  • Typescript 找不到模块

    我在 Typescript 的一个文件 upload ts 中有一个导出的模块 我无法在没有错误的情况下导入到另一个文件 application ts 中 另外 我无法导入 ExpressJS 这是Upload ts
  • Laravel 5 - URL 查询字符串的 NGINX 服务器配置问题

    Laravel 没有从 URL 查询字符串接收任何 GET 变量 GET 和 Input all 为空 Example example app ex login php country US country US 从未出现在我的 GET 变
  • TypeScript 代码上的 JSlint - 它还能教我编写更好的代码吗?

    在 TypeScript 生成的代码上使用 JSlint 还能教我编写更好的代码吗 如果是 您能提供一两个例子吗 Thanks 没有 由于生成的 javascript 在不良打字稿 良好打字稿之间是一致的 例如缺少分号 对于打字稿 有一个
  • TypeScript 中的可变参数方法至少需要一个参数

    我有一个像这样的方法 getValues args Array
  • 如何在 Angular @Input 中仅接受预定义值

    我的问题是 我在 a 中收到一个字符串值作为组件的参数 但我想限制可以用作参数的值 就像enum I use Input type string 但是在组件中 一切都可以引入type正如我之前所说 我需要将其限制为 3 个选项 例如Enum
  • D3、TS 和 Angular 2

    我正在尝试将 D3 v4 与 Angular 2 Typescript 一起使用 我目前正在研究 D3 v4 我能够遵循 stackoverflow 中类似问题的一些答案 但没有成功 我已经导入了大部分 D3 库及其类型 我使用的是 TS
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • 从回调中访问状态

    我在从回调访问组件状态时遇到问题 国家的价值num更改正确 但此类更改对于加载时定义的回调函数不可见 import React useState from react class MyObject callback gt void cons
  • webpack TS2304 找不到名称“Map”、“Set”、“Promise”

    我有以下 webpack config js var path require path var webpack require webpack module exports entry ng2 auto complete path joi

随机推荐

  • 如何为专有语言构建 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