如果添加另一个数据流,解析器无法解析

2023-12-01

我正在尝试使用解析器来根据路由保存的给定参数检索数据。

不幸的是,当我添加另一个数据流时,我的数据依赖于解析器,但实际上从未解析。

如果我直接返回一个立即解析值,一切都会正常。 我调试了这种情况,发现我收到了所有部分信息,但最终未能真正解决。

这是一个快速示例。如果需要更多代码来理解问题,请联系我。

我的服务:

export class MyService {
  get(bar) {
    return of(new Foo(bar));
  }
}

SecondService(这个从后端检索数据):

export class SecondService {
  private readonly _observable: Observable<Bar>;
  constructor() {
    this._observable = merge(
      // Other manipulations
    ).pipe(
      // other manipulations
      shareReplay(1)
    )
  }

  observable(): Observable<Bar> {
    return this._observable;
  }
}

解析器:

export class MyResolver {
  constructor(_secondService: SecondService, _myService: MyService) {}

  resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Foo> {
    // Does not work - Simply does not resolve
    // return this._secondService
    //   .observable()
    //   .pipe(
    //     switchMap((bar) => this._myService.get(bar)),
    //   );

    // WORKS
    return of(new Foobar('sampleData'));
  }
}

Router:

const routes: Routes = [
  {
    path: 'someroute',
    component: SomeComponent,
    canActivate: [SomeGuard],
    resolve: {
      myData: MyResolver,
    },
  },
];

成分:

export class SomeComponent implements OnInit {
  constructor(private readonly _route: ActivatedRoute) {}

  ngOnInit() {
    this._route.data
      .subscribe((data) => {
      console.log('received:', data);
      this.myData = data;      
    });
  }
}

一些组件.html

<pre *ngIf="myData">
  Received: {{ myData | json }}
</pre>

我的问题的答案相当简单,与订阅已解析的可观察量无关,因为框架已经自动完成了这一点。

为了使解析器完成,它所依赖的所有流都需要complete。如果您碰巧使用热可观察值,则需要使用另一个运算符,例如take以便流在该位置完成。

因此,所有代码保持不变,只是我将解析器更改为:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Foo> {
  return this._secondService
    .observable()
    .pipe(
      take(1),
      switchMap((bar) => this._myService.get(bar)),
  );
}

@eduPeeth:谢谢您的回答/建议,不幸的是,这是一个更小的问题。

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

如果添加另一个数据流,解析器无法解析 的相关文章

  • 如何在 Angular 2 中处理 200 以外的 http 状态码

    现在我做http请求的方式 借用这个答案 https stackoverflow com a 34758630 4937981 这是 POST url data var headers new Headers authtoken local
  • Angular 8 中的 ag-grid 单元格内未显示字体真棒图标

    我正在尝试学习 Angular 因此遵循有关安装和使用 ag grid 和 Font Awesome 的指南 但我无法使用 cellRenderer 在 ag grid 单元格内显示 fa icon 如果我在网格之外使用相同的图标 HTML
  • 如何修改primeng p日历样式?

    我正在尝试修改 primeng p calendar 但它无法正常工作 例如 我希望它是这样的 需要的改变 https i stack imgur com QBXoh png 但原来它看起来像这样 原始图像 https i stack im
  • 为什么 Angular 2 ngOnChanges 不响应输入数组推送

    我的角度应用程序遇到了问题 我使用输入作为数组 并在单击事件发生时将值推送到数组 但是当数组推送完成时 ngOnChanges 不会触发 有没有办法触发 ngOnChange 我的代码是 ts 文件是 Component selector
  • Angular:先完全安装 Service Worker

    我正在用 Angular 编写一个 PWA 需要准备好从单页加载中离线 Service Worker 生命周期的文档指定 Worker 已安装但不会立即激活 https developers google com web fundament
  • 从 Angular 2 动态表单的 API 设置值

    我正在尝试开始在 Angular 2 中创建动态表单 并且我正在使用 Angular 食谱中的设置here https angular io docs ts latest cookbook dynamic form html作为我的起点 我
  • Angular2 + Laravel 与实时和 WebSockets

    我构建了一个应用程序 并计划与 Angular 2 和 laravel 进行实时战斗 例如 你按下 攻击 按钮 你的对手就会实时看到他的生命在下降 我的应用程序构建有 前端 角2 Backend PHP Laravel 5 2 现在我正在寻
  • 如何使用 Web 套接字和 Angular CLI 设置代理

    我有一个使用 Angular CLI 构建的简单 Web 应用程序 我希望它使用网络套接字与后端通信 我已经编写了后端 并使用一个简单的 index html 页面进行了测试 服务器可以在套接字上发送和接收该页面 在我的 angular c
  • 在 spring-boot 中设置 base-href 和 context-path - Angular 6 应用程序

    我正在构建一个 Web 应用程序 其中 UI 客户端组件是使用 Angular 6 构建的 后端 服务器端 位于 Spring boot 上 申请预计可在 http localhost 8080 FUtility 我通过在 appmodul
  • 单击上一页的按钮路由到该页面后如何刷新页面

    我有 2 个页面 一个主页和一个页面 2 当我单击主页上的按钮时 它会路由到 page2 现在 单击主页上的按钮后 当我到达第 2 页时 它应该刷新 因为我的项目中存在一些缓存问题 我在ngoninit上添加了window location
  • Angular2通用部署到apache远程服务器

    我在将 Web 应用程序部署到 Apache 远程服务器时遇到问题 我已经通过以下步骤部署了一个使用 RESTful API 服务 用 PHP 编写 托管在 public html api 的标准 Angular2 Web 应用程序 在项目
  • 如何在Angular2中正确使用依赖注入(DI)?

    我一直在试图弄清楚 DI 依赖注入在 Angular2 中是如何工作的 每次当我尝试将服务 或类注入我的组件时 我都会遇到很多问题 从不同的谷歌搜索文章中 我需要使用providers 在组件配置中 或者有时我需要使用 Inject 在我的
  • 如何让Angular2绑定innerHTML中的组件

    我想创建一个组件myApp它将把控制器上的属性中的 HTML 嵌入到其模板中 但是 其中一些 HTML 可能包含其他组件选择器 import InfoComponent from Component selector myApp templ
  • 如何将 Laravel 5.4 与 Angular 4 集成

    我知道如何创造完整的拉拉维尔 5 4自己的项目 我也知道如何使用创建 SPA角4 Problem 我不知道如何将 Laravel 与 Angular 集成 另外 我想使用 Laravel 5 4 作为后端 使用 Angular 4 作为前端
  • aspnetcore 出现角度错误 NodeInitationException:节点调用在 60000 毫秒后超时

    我在用着yo generator aspnetcore spa一旦我运行应用程序 我就遇到了问题 处理请求时发生未处理的异常 NodeIncationException 节点调用在 60000 毫秒后超时 您可以通过设置更改超时持续时间 N
  • D3、TS 和 Angular 2

    我正在尝试将 D3 v4 与 Angular 2 Typescript 一起使用 我目前正在研究 D3 v4 我能够遵循 stackoverflow 中类似问题的一些答案 但没有成功 我已经导入了大部分 D3 库及其类型 我使用的是 TS
  • angular2 MdDialog 未显示为弹出窗口

    所以我尝试使用 MdDialog 来显示错误消息 不幸的是 它不是显示为弹出窗口 而是显示为页面底部的块 我需要查看或更改哪些内容才能使其正常工作 下面的代码 common modal component html h2 title h2
  • 对预检请求的响应未通过访问控制检查:响应中“Access-Control-Allow-Credentials”标头的值为“”

    我正在 Angular 6 和 asp net core 上使用 SignalR 功能 但不断收到此错误对预检请求的响应未通过访问控制检查 响应中 Access Control Allow Credentials 标头的值为 当请求的凭据模
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • Angular 模板验证表单

    我正在研究表单验证 我正在使用模板驱动的验证表单 其编码如下 现在工作正常 但是当我尝试添加时 username ngModel and password ngModel 在创建验证类的输入中 它向我显示一个错误 也请找到该错误 div c

随机推荐

  • Android:由同一意图启动多个活动实例。将一个独特的元素带到前台?

    我正在努力开发启动多个实例的应用程序 使用相同意图的相同活动 我的主要活动是课堂类型 A 它对两个相同的子项执行 startActivity B类 所以我们推出了B1和B2 如果 B1 和 B2 都是 暂停 通过按后退按钮并确保未调用 fi
  • Google 运算符的正则表达式

    使用 PHP 我试图通过支持类似 Google 的运算符 例如 关键字 自然 默认 关键字 或 搜索短语 完全匹配 关键字 部分匹配 为此 我需要将字符串拆分为两个数组 一种将确切的单词 但没有双引号 放入 Array1 中 并将其他所有内
  • 合并两个 XElement

    我不太确定如何问这个问题 或者这是否存在 但我需要合并两个 XElement 其中一个优先于另一个 以成为一个元素 这里首选 VB NET 和 Linq 但任何语言如果能够演示如何执行此操作 而无需我编写代码来手动分离和解析每个元素和属性
  • Cucumber:不允许扩展定义步骤定义或挂钩的类

    我从别人那里继承了一个大的测试项目 主要的Java类是CommonSteps CommonBase和CommonScript 它们目前是这样关联的 CommonSteps 扩展了 CommonBase CommonBase 扩展了 Comm
  • 如何在不输入时间的情况下读取两个相同的日期

    我有一个如下查询 SELECT occupation AS Contact occupation sum total AS Quantity FROM SELECT CASE WHEN contacts occupation IS NULL
  • 时间事件监听器

    我的问题 如何让我的应用程序在特定时间执行某些操作 特别是在技术上无法运行的情况下 这可能吗 最佳实践 事件监听器 ETC 扩张 我对 Android 开发还很陌生 我想构建一个调度应用程序 它可以在预先安排的时间控制手机的某些功能 假设我
  • 如何正确初始化平台驱动程序的属性组?

    EDIT 4 我发现我不应该分配attr groups to the groups领域中的driver领域的struct platform driver结构 找评论吧 WRONGO should not be assigned here 以
  • 对 MS Graph API 的请求给出“授权请求被拒绝 - 没有足够的权限来完成操作”

    我对 授权请求被拒绝 权限不足 无法完成操作 消息有疑问 该消息不断从对 Windows Graph API 的请求中返回 具体来说 我在 Azure 云中工作 我有一个调用 API 的 iOS 移动应用程序 我已在我的门户中打开 Acti
  • Perl Getopt 多次使用相同选项

    In Perl getopts 是否可以多次使用相同的选项但具有不同的值 我想为用户提供输入不同网格坐标的选项 但使用相同的选项名称以最大程度地减少混乱 Ex my grid pl coords 10 12 coords 18 30 coo
  • 使用 AWT Robot 在 Mac 上切换应用程序有时有效

    我正在尝试使用机器人来切换应用程序 然后输入一些文本 为此 在我的 Mac 上 我按 Meta Tab 然后按以下顺序释放 Tab Meta Robot robot new Robot robot keyPress KeyEvent VK
  • 刚性类型变量不匹配

    我有以下失败的 Haskell 代码Couldn t match type a with a1 error bar Int gt a gt Int gt a gt a gt a bar ns fp ap snd foldl fn fp ap
  • 如何使用Python只读取目录中的wav文件?

    from scipy io wavfile import read files f for f in os listdir if os path isfile f print files for i in range 0 1 w read
  • 自动映射器 - 继承映射器不与类型转换器一起使用

    不能同时使用映射继承和 TypeConverter 我有这个代码 BaseClassTypeConverter cs public class BaseClassTypeConverter ITypeConverter
  • TRUE 用作矩阵索引时如何解释?

    我在某处看到一些 错误的 代码 结果调用了一个执行的函数mymatrix TRUE 一路上 事实证明 至少在我测试的样本中 这被解释为选择矩阵的所有元素 清楚地 不是胁迫TRUE to 1 因为那样我只会得到返回的第一个元素 而不是整个矩阵
  • PlayN 字体支持

    PlayN 或支持库 如 TriplePlay 等 对非标准字体 特别是自定义 TrueType 字体 提供何种支持 您必须在要使用的每个后端上以不同的方式注册字体 但是一旦按名称注册了字体 您就可以像任何内置字体一样使用它 只需调用Pla
  • 如何在片段内实现viewpager?

    我一直在寻找并很难找到一个明确的例子 我试图了解如何在从我的 mainActivity 作为抽屉项目打开的片段中创建视图分页器 这是我的尝试 但我认为我做错了什么 无论是我错误地包含它还是将它放在错误的位置 public class Ran
  • 如何根据组合框选择更改多个标签?

    我希望你知道如何根据不同的标签在不同的标签中拥有多个值Combobox下拉列表选择 例如 假设您有一个Combobox与值 car house computer 和多个Label选择时反映不同尺寸和颜色Combobox 如果我选择car 我
  • 极坐标图在 matplotlib 中给出错误的角度

    我正在尝试用Python绘制赤经 赤纬极坐标图 其中角度表示赤经 半径表示赤纬 范围在 30之间 我的代码是 import numpy import matplotlib pyplot as pyplot ra 345 3895474541
  • 无论如何,保持导航栏中的 Bootstrap Dropdown 打开

    我有一个嵌套在导航栏中的下拉菜单 我在页面加载期间通过添加以下内容打开该菜单open类到li包含下拉菜单的元素 我希望无论用户单击什么内容或单击页面上的哪个位置 此菜单都保持打开状态 我尝试过在 Stackoverflow com 上找到的
  • 如果添加另一个数据流,解析器无法解析

    我正在尝试使用解析器来根据路由保存的给定参数检索数据 不幸的是 当我添加另一个数据流时 我的数据依赖于解析器 但实际上从未解析 如果我直接返回一个立即解析值 一切都会正常 我调试了这种情况 发现我收到了所有部分信息 但最终未能真正解决 这是