首页 新闻 会员 周边

Angular: 如何让 auxiliary route 不使用圆括号

0
悬赏园豆:30 [待解决问题]

auxiliary route 默认会使用圆括号,而微信在自动生成链接时会忽略右圆括号,请问如何让 auxiliary route 不使用圆括号?

dudu的主页 dudu | 高人七级 | 园豆:31007
提问于:2023-05-16 14:36

相关链接 https://stackoverflow.com/q/41870911/5989202

dudu 11个月前

右圆括号之后加个斜杠 /,微信就能正常解析

dudu 11个月前
< >
分享
所有回答(2)
0

import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuxiliaryRouteComponent } from './auxiliary-route.component';

const routes: Routes = [
{
path: 'auxiliary',
component: AuxiliaryRouteComponent,
outlet: 'aux',
data: { useRightParenthesis: false } // 将选项设置为false以避免使用右括号
}
];

@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }

lanedm | 园豆:2378 (老鸟四级) | 2023-05-16 16:07

useRightParenthesis: false 不起作用

支持(0) 反对(0) dudu | 园豆:31007 (高人七级) | 2023-05-16 16:24

@dudu: 参考这个文章,Angular自定义路由,通过正则表达式处理右括号,https://www.w3cschool.cn/angular13/angular13-qzgk3p0f.html

支持(0) 反对(0) lanedm | 园豆:2378 (老鸟四级) | 2023-05-16 16:52
0

在调用第三方接口并且需要回滚其变更时,通常有两种方式可以实现第三方接口的回滚操作:

支持回滚的第三方接口:首先,确保你使用的第三方接口本身支持回滚操作。这意味着第三方接口提供了相应的接口或机制来撤销或回滚之前的操作。如果第三方接口支持回滚,你可以按照其提供的方法调用回滚接口,以撤销之前的操作。在这种情况下,你只需调用第三方接口的回滚方法,并确保传递正确的参数以识别要回滚的操作。

与第三方接口的事务性集成:如果第三方接口不直接支持回滚操作,你可以尝试与其集成事务性。这要求第三方接口能够参与到你的应用的事务中,并且支持事务的提交和回滚。在这种情况下,你需要使用具有分布式事务支持的框架或工具,例如Java中的JTA(Java Transaction API)。通过将第三方接口的操作与你的应用内部的数据库操作或其他事务资源进行事务绑定,你可以实现整体事务的回滚,包括第三方接口的回滚操作。

请注意,这两种方法都需要第三方接口的合作和支持。如果第三方接口本身不提供回滚功能,并且无法与你的应用进行事务集成,那么确保数据的一致性可能会更具挑战性。在这种情况下,你可能需要考虑其他方式来保证数据的一致性,例如通过实现一个补偿机制或与第三方接口的开发者协商找到其他解决方案。

User
auxiliary route 默认会使用圆括号,而微信在自动生成链接时会忽略右圆括号,请问如何让 auxiliary route 不使用圆括号?
ChatGPT
要让auxiliary route不使用圆括号,你可以通过在路由配置中使用encodeURI函数来解决微信自动生成链接时忽略右圆括号的问题。

在Angular中,你可以使用encodeURI函数来对路由路径进行编码,以确保右圆括号被正确处理。以下是一个示例:

typescript
Copy code
import { Component } from '@angular/core';
import { Router } from '@angular/router';

@Component({
selector: 'app-your-component',
template: <button (click)="navigateToAuxiliaryRoute()">Go to Auxiliary Route</button> ,
})
export class YourComponent {
constructor(private router: Router) {}

navigateToAuxiliaryRoute() {
const auxiliaryRoutePath = '/your-auxiliary-route';
const encodedAuxiliaryRoutePath = encodeURI(auxiliaryRoutePath);
this.router.navigateByUrl(encodedAuxiliaryRoutePath);
}
}
在上面的示例中,我们使用encodeURI函数对auxiliaryRoutePath进行编码,然后使用router.navigateByUrl导航到编码后的路径。这样可以确保微信在自动生成链接时正确处理右圆括号。

请注意,使用encodeURI函数进行编码可能会影响路由路径的其他部分,因此在解码路由参数时需要进行相应的解码操作。你可以使用decodeURI函数来解码路由参数。

typescript
Copy code
import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({
selector: 'app-your-auxiliary-component',
template: <h1>Auxiliary Component</h1> <p>Param: {{ decodedParam }}</p> ,
})
export class YourAuxiliaryComponent {
decodedParam: string;

constructor(private route: ActivatedRoute) {
const encodedParam = this.route.snapshot.paramMap.get('param');
this.decodedParam = decodeURI(encodedParam);
}
}
在上述示例中,我们使用decodeURI函数对路由参数进行解码,以获取原始的未编码值。

通过对auxiliary route路径使用encodeURI函数进行编码,并在必要时使用decodeURI函数进行解码,你可以确保微信在自动生成链接时正确处理圆括号,并正确导航到auxiliary route。

Technologyforgood | 园豆:5575 (大侠五级) | 2023-05-16 22:38

很chatGPT

支持(0) 反对(0) 永远跟党走i | 园豆:1519 (小虾三级) | 2023-05-22 12:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册