在aurelia路由器中创建导航计划时出现错误的查询

在aurelia路由器中创建导航计划时出现错误的查询,aurelia,Aurelia,我们在项目中使用aurelia open id connect,成功登录后,重定向将从url中删除查询字符串。我通过aurelia路由器进行了调试,我想我找到了一些东西。是否应该在那里使用重定向指令中的查询字符串 export const buildRedirectPlan = (instruction: NavigationInstruction) => { const config = instruction.config; const router = instruction

我们在项目中使用aurelia open id connect,成功登录后,重定向将从url中删除查询字符串。我通过aurelia路由器进行了调试,我想我找到了一些东西。是否应该在那里使用重定向指令中的查询字符串

export const buildRedirectPlan = (instruction: NavigationInstruction) => {
  const config = instruction.config;
  const router = instruction.router;
  return router
    ._createNavigationInstruction(config.redirect)
    .then(redirectInstruction => {

      const params: Record<string, any> = {};
      const originalInstructionParams = instruction.params;
      const redirectInstructionParams = redirectInstruction.params;

      for (let key in redirectInstructionParams) {
        // If the param on the redirect points to another param, e.g. { route: first/:this, redirect: second/:this }
        let val = redirectInstructionParams[key];
        if (typeof val === 'string' && val[0] === ':') {
          val = val.slice(1);
          // And if that param is found on the original instruction then use it
          if (val in originalInstructionParams) {
            params[key] = originalInstructionParams[val];
          }
        } else {
          params[key] = redirectInstructionParams[key];
        }
      }
      let redirectLocation = router.generate(redirectInstruction.config, params, instruction.options);

      // Special handling for child routes
      for (let key in originalInstructionParams) {
        redirectLocation = redirectLocation.replace(`:${key}`, originalInstructionParams[key]);
      }

      let queryString = instruction.queryString; 
      // use redirectInstruction.queryString instead?
      if (queryString) {
        redirectLocation += '?' + queryString;
      }

      return Promise.resolve(new Redirect(redirectLocation));
    });
};
export const buildRedirectPlan=(说明:导航说明)=>{
const config=instruction.config;
const router=instruction.router;
返回路由器
.\u createNavigationInstruction(config.redirect)
。然后(重定向指令=>{
常量参数:记录={};
const originalInstructionParams=指令.params;
const redirectInstructionParams=redirectInstruction.params;
for(输入重定向指令参数){
//如果重定向上的参数指向另一个参数,例如{route:first/:this,redirect:second/:this}
设val=redirectInstructionParams[key];
if(typeof val=='string'&&val[0]==':'){
val=val.slice(1);
//如果在原始指令中找到该参数,则使用它
if(原始指令参数中的val){
params[key]=originalInstructionParams[val];
}
}否则{
params[key]=重定向指令params[key];
}
}
让redirectLocation=router.generate(redirectInstruction.config,params,instruction.options);
//儿童路线的特别处理
for(输入originalinstruction参数){
redirectLocation=redirectLocation.replace(`:${key}`,originalInstructionParams[key]);
}
设queryString=instruction.queryString;
//是否改用redirectInstruction.queryString?
如果(查询字符串){
重定向位置+='?'+查询字符串;
}
返回承诺.解析(新重定向(重定向位置));
});
};

这是最新历史浏览器模块的问题,aurelia router使用该模块处理片段。请确保您使用了1.3.1:
npm i aurelia历史记录-browser@1.3.1
并等待传入版本。对不起this@bigopon我现在使用的是aurelia历史浏览器的1.3.1版,仍然是同一个问题。我想你是对的。对不起,没有仔细准备好问题。这似乎有一段时间是错误的,per v1.6.3将很快修复。我正在处理此场景的测试,您能否帮助创建一个问题,并提供至少一些伪代码来演示此问题和复制?@bigopon我现在打开了一个问题。