问题标签 [angular-in-memory-web-api]

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.

0 投票
2 回答
818 浏览

angular - Angular 英雄之旅和内存数据服务

我目前正在浏览 Angular.io 英雄教程之旅,在进行过程中进行了一些非常小的更改,因此我不会 100% 复制教程。

我已经到了关于 http 的第六部分,更具体地说,我正在使用 In Memory Web Api Service 通过 id 获取值。

通过id获取英雄

大多数 Web API 支持 api/hero/:id 形式的 get by id 请求(例如 api/hero/11)。添加一个 HeroService.getHero() 方法来发出这个请求:

由于我对代码所做的微小更改,我在实现这部分时遇到了问题。我的数据对象与示例不同,它们被命名为动物,具有其他属性,并且这些属性大写。

教程代码


我的代码


这不起作用的原因是我将对象上的 id 属性大写,而修复只是将其更改回“id”。

但是,我想在动物对象上保持 id 大写为“Id”,但我不知道如何做到这一点并使 getAnimal 方法与它一起工作。这可能与 In Memory Web Api 有关吗,如果可以,有人可以帮助我吗?

0 投票
1 回答
636 浏览

angular - 角度如何仅将 in-memory-web-api 用于演示帐户

我找到了很多关于如何根据环境(开发或产品)在使用 angular-in-memory-web-api 或真实 API 之间切换的资源,但我想做的却完全不同。

我希望人们能够在不创建任何帐户并使用 in-memory-web-api 的情况下试用该产品,以便匿名用户无法与真正的 API 进行交互。

他们将使用一个带有虚拟数据的模拟账户,这些数据已经可以在他们自己的隔离环境中使用。我正在考虑向服务中注入一个真正的 http 服务和一个使用 in-memory-web-api(名为 mockAPI)的服务,并且每个服务都将依赖 UserService 属性来选择要使用的服务(这将在执行时,不编译)。

我在空闲时间学习 Angular,但我不知道如何注入同一服务的两个实例,其中一个被 in-memory-web-api 绕过。

怎么能这样做,或者有没有更好的方法来解决这个问题?

谢谢您的帮助。

0 投票
1 回答
79 浏览

javascript - 迭代对象数组属性的值

我使用 Angular InMemoryService 来存储一些假数据。我想将“HashtagDB”属性转换为数组“hashtags”。这个“hashtags”数组应该只包含值,而不是标签,这样我就可以用它来将它显示为 Angular-Material-Chips。

据我了解,HashtagDB 是一个未命名对象的数组属性。那是对的吗?如何转换数组中的数据?

0 投票
1 回答
441 浏览

angular - 如何在 Angular5 应用程序中使用 in-memory-web-api 和真实服务 API

当我将 in-memory-web-api 与真正的 api 一起使用时,我遇到了问题。当我打电话给 post call 它没有触发它正在寻找 in-memory-web-api。我想对某些页面使用 in-memory-web-api,因为我的 rest api 还没有准备好。有些页面我得到了真正的服务 API。当我集成真正的服务时,它不会触发。经过长时间的分析,我发现由于 in-memory-web-api 不起作用。让我知道是否有任何方法可以在 Angular5 应用程序中同时使用这两种方法。

另一个 service.js 我正在调用真正的 post call。

0 投票
1 回答
1011 浏览

angular - 英雄之旅 - 步骤 8/HTTP - 内存中 webapi 返回未定义

问题:如教程第 8 步所述,当尝试使用 HeroService.getHeroes() 获取所有英雄时,内存中的 web api 将返回“未定义”。

InMemoryDataService 实现:

使用 HTTP 的 HeroesService 实现(与手头问题相关的摘录)

包.json:

运行应用程序时的错误消息:

HeroService:getHeroes 失败:未定义

为什么内存中的 Web api 不能将对“api/heroes”的请求映射到我的数据?

0 投票
1 回答
1079 浏览

angular - 无法按照教程获得 angular-in-memory-web-api 0.6.1 工作

因此,我遵循了https://angular.io/tutorial/toh-pt6中的教程。我已经根据我的具体案例定制了本教程,它只是显示了一个仪表板。当我使用本地模拟时,我的代码运行良好。当我升级到内存中的 web api 时,事情就出错了。

我收到的错误错误信息

我已经检查了实时代码示例(参考https://stackblitz.com/angular/vvxldjlmnna)并且无法真正找到我做错的影响代码。

首先,我使用npm install angular-in-memory-web-api --save. 正如 CLI 所提到的,我检查了 node_modules 并看到它确实已成功下载。检查package.json文件,我可以看到在依赖项“angular-in-memory-web-api”:“^0.6.1”中已添加

app.module.ts 中,我按以下特定顺序导入了这些模块:

我正在使用路由器插座来显示仪表板。为此,我使用了一个路由器模块:

在我的 in-memory-data.service.ts文件中

在我的dashboard.service.ts文件中,我注入HttpClient 并从api 调用dashboarddata,从'rxjs' 导入Observable 和从'@angular/common/http' 导入HttpClient。这是仪表板服务:

然后在仪表板组件中,我为数据调用服务:

对于 DashboardReport 类,我有:

0 投票
1 回答
285 浏览

angular - angular in-memory-web-api 简单查询字符串不适用于@字符

我正在使用 Angular2+ 和 in-memory-web-api,我正在尝试做一个简单的查询字符串。我正在传递一个确切的电子邮件地址来检查用户是否已经存在。我的 createDB 有几个用户的 propertyName 为“loginEmail”和这些电子邮件:

  • john@email.com
  • jane@email.com

API URL 如下所示:

如果我通过:

约翰

我得到一个要返回的对象。如果我通过:

电子邮件.com

我让两个对象都返回。但是,如果我通过:

john@email.com 或 john@

我得到404 - 未找到

有谁知道为什么这件事在 @ 字符上出现问题,以及如何让 in-memory-web-api 在传递电子邮件地址时正确返回对象?

谢谢!

0 投票
0 回答
57 浏览

angular - 扩展 angular-in-memory-web-api

我的组织为任何 api 返回相同的对象。

这是一个包装器,您可以从一个 restful api 中得到实际的正常响应,例如 api/products 返回 MyOrgResponse 对象,它可能看起来像

和 api/products/123 返回

这打破了 angular-in-memory-web-api 因为它期望一个安静的集合来访问例如。

我可以扩展服务并拦截 get(reqInfo: RequestInfo) {} 方法。在这里,我可以重新指向它正在寻找的集合(例如,如果我的 api/products/123 被调用)。然后我重建主体以返回 MyOrgObject。

第一点有效,但是关于我如何重建正文/响应对象的任何想法,因为我的订阅正在爆炸说

我这样做是为了重建

谢谢

0 投票
1 回答
546 浏览

angular - 英雄之旅中 HttpClientInMemoryWebAPI 的问题

自从我从 Angular 中断 4 个月以来,我一直在做《英雄之旅》教程。一切都很顺利,直到我点击 http 部分。特别是 HttpClientInMemoryAPI 部分。从我发现的搜索来看,这听起来像是一个兼容性问题。我找到了这篇文章以及这篇文章,并尝试恢复到 0.5.4 版。我还尝试删除 node_modules 目录并执行 npm 安装(在运行安装之前,我确实确保 InMemAPI 的版本保持在 0.5.4)。我发现的大多数其他文章都是针对 Angular 2 的,所以我没有花太多时间尝试这些文章。我目前得到的错误是:

node_modules/angular-in-memory-web-api/http-backend.service.d.ts(2,75) 中的错误:错误 TS2307:找不到模块“@angular/http”。node_modules/angular-in-memory-web-api/http-backend.service.d.ts(3,10): error TS2305: Module '"C:/Development/Working/tour-of-heroes/node_modules/rxjs/ Observable"' 没有导出的成员 'Observable'。node_modules/angular-in-memory-web-api/http-client-backend.service.d.ts(2,10): error TS2305: Module '"C:/Development/Working/tour-of-heroes/node_modules/ rxjs/Observable"' 没有导出的成员 'Observable'。node_modules/angular-in-memory-web-api/http-in-memory-web-api.module.d.ts(2,28):错误 TS2307:找不到模块“@angular/http”。node_modules/angular-in-memory-web-api/interfaces.d.ts(1,10): error TS2305: Module ' "C:/Development/Working/tour-of-heroes/node_modules/rxjs/Observable"' 没有导出成员 'Observable'。node_modules/rxjs/Observable.d.ts(1,15):错误 TS2307:找不到模块“rxjs-compat/Observable”。

我希望我已经做了足够的研究,不要因为问这个问题而被激怒,如果不是,请至少给我一个好的网址,因为我在上面发布的 2 篇文章似乎是最相关和最近的。

谢谢大家,非常感谢您的帮助!

0 投票
1 回答
676 浏览

angular - HttpInterceptor 和内存数据服务 Angular 7

我一直在为我正在开发的应用程序使用虚拟身份验证。所以我已经使用虚拟本地用户成功实现了这一点。

不幸的是,当我试图让它与内存数据服务一起工作时,我遇到了障碍。我的用户数组返回未定义并且无法在控制台日志中将错误更改为字符串。下面是使用拦截器的假后端。

接下来是我的用户服务。

我怀疑这是我错过或不确定的事情。感激地收到任何帮助。

编辑:调试时出现 RangeError:超出最大调用堆栈大小