- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在尝试了解如何在 Angular 组件中收集 queryParameters。因为我只想在初始化期间收集它们一次,所以我首先尝试了快照模式:
ngOnInit() {
console.log(this.route.snapshot.queryParamMap);
console.log('param test = ' + this.route.snapshot.queryParamMap.get('test'));
}
查看 Stackblitz 上的演示:https://stackblitz.com/edit/angular-2tuafn可通过以下网址进行测试:https://angular-2tuafn.stackblitz.io?test=123
但结果是,queryParam "test"为 null,queryParamMap 为空,请参阅控制台输出:
ParamsAsMap {params: {…}}
keys: Array(0)
params: {}
__proto__: Object
param test = null
=> 为什么queryParamMap 是空的???
然后,我尝试使用 Observable 模式:
ngOnInit() {
this.route.queryParamMap.subscribe(
(params: ParamMap) => {
console.log(params);
console.log('param test = ' + params.get('test'));
}
);
}
查看 Stackblitz 上的演示:https://stackblitz.com/edit/angular-hfqx8a可通过以下网址进行测试:https://angular-hfqx8a.stackblitz.io?test=123
但结果是,queryParam "test"首先为 null,然后取正确的值 (123),请参阅控制台输出:
ParamsAsMap {params: {…}}
keys: Array(0)
params: {}
__proto__: Object
param test = null
Angular is running in the development mode. Call enableProdMode() to enable the production mode.
ParamsAsMap {params: {…}}
keys: Array(1)
params: {test: "123"}
__proto__: Object
param test = 123
=> 为什么第一个控制台输出为空,然后控制台输出正确的 queryParam 值?
经过多次研究,我无法理解发生了什么:-(
=> 预先感谢您的帮助
问候
编辑:
感谢 Dimanoid 和 Pravin Pokharkar,我明白了我的问题。=> 因为组件是在应用实际路由之前加载的!!!
因此我更新了我的代码,现在我正确地收集了查询参数:
this.router.events.subscribe(
(event: RouterEvent) => {
if (event instanceof NavigationEnd) {
this.test = parseInt(
this.activatedRoute.snapshot.queryParamMap.get('test')
);
}
}
);
最佳答案
因为组件是在应用实际路由之前加载的。将 { enableTracing: true }
添加到 RouterModule
以查看幕后发生的情况。
RouterModule.forRoot([], { enableTracing: true })
https://stackblitz.com/edit/angular-boghpy?file=src/app/app.module.ts
关于angular - 为什么 queryParams 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55295469/
我使用 vuejs-axios 从客户端获取数据并将其发布到服务器端。在服务器端,我使用了 java,而我使用 SparkJAVA 框架来处理请求响应。下面提到的代码块是我用来将表单数据从 vuejs
您好,使用多路由构建 Angular 应用。 导航到页面 > queryParams 触发订阅。 当我在页面中时,我需要更改页面内的 queryParams 但不会再次触发订阅功能。 (因为我不想再次
我正在寻找在 Spring 中使用 @QueryParam 的简单示例。我的想法是有一个像这样的链接,它将获取 id 值,运行我的 java 类并显示返回的字符串。我的问题是没有找到返回值。 http
我有以下格式从浏览器发送的查询参数 sort[0][field]:prodId sort[0][dir]:asc 如何使用@QueryParam在服务器中检索上述参数? 从 Chrome 控制台 ta
我正在创建一个端点(使用 Jersey 注释),该端点接收字符串列表作为参数。字符串需要包含一个键和一个值。所以在 url 上它看起来像 ?params=key1=value1¶ms=key2
我正在尝试从 REST Web 服务的 URL 请求中获取请求参数。 @Path 能够映射方法。但 QueryParam 无法从查询参数中获取值。 我的请求网址是 192.168.20.147:808
我必须从客户端 java 类调用一个 Restful Web 服务。 我需要传递 HashMap、String,它必须返回一个 bean 列表。我正在使用 Jersey Restful 网络服务 我的
我正在使用 Jersey for Rest 并有一个接受 @QueryParam. 的方法 但是,用户可以像这样发送@QueryParam.: contractName# 其中 # 是 0-155 之
这是函数头 @GET @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Path("/getxyz") pub
我正在尝试更新(添加、删除)组件中的 queryParams。在 angularJS 中,它曾经是可能的,这要归功于: $location.search('f', 'filters[]'); // s
我有一个 Express 服务器,并且在我的路由中配置了: app.use(express.urlencoded({ extended: false })); 在前端,我使用 Angular 发送请求
给出以下代码: newtype HelloMessage = HelloMessage { msg :: String } deriving (Generic) instance ToJSON H
我有一个 RESTful 服务。这需要两个参数:开始日期和结束日期。 如果我使用 @RequestParam 注释,我就会得到我需要的东西。但如果我使用 @QueryParam,我注意到即使传递它,它
有没有办法在不使用 @QueryParam 注释显式声明其名称的情况下获取任何查询参数? 我有一个字符串,其中可能包含诸如 {animal} 之类的标记,然后将其替换为发布的查询参数,例如?anima
当我在 JAX-RS 中添加字符串的默认值时,它不会获取该值。它保持为 null 或空。 @QueryParam("status") private String status = "confirme
例如,我有课 class MyQuery { Date start; Date end; ChronoUnit scale; // ChronoUnit is enum } 我想声明
对于以下示例(使用 Jersey 2.6),百分比编码的查询参数未解码,相反,+ 被空格替换。 @Path("test") public class TestResource { @Path(
我目前正在尝试了解如何在 Angular 组件中收集 queryParameters。因为我只想在初始化期间收集它们一次,所以我首先尝试了快照模式: ngOnInit() { console.
我想在我的应用程序中提供一个基于来自 url 的 QueryParam 的常量。 localhost:4200?flag=true 在我添加的模块提供者中 { provide: FLAG, useFa
我正在尝试使用 Angular 2.0 捕获查询字符串参数,但遇到了困难。我有一个这样的网址 http://localhost:5000/?id_token=eyJ0eXAiO .... 而且我希望能
我是一名优秀的程序员,十分优秀!