javascript - 如何将编码字符串作为参数发送到 Angular 中的url字符串并在新选项卡中打开

标签 javascript angular angular8

如何将编码字符串作为参数发送到 Angular 中的 URL 字符串中并在新选项卡中打开。我试图发送由“-”分隔的多个参数,并通过 url 转换为 Base64 编码,但它让我陷入找不到状态。我正在使用 Angular 8。使用 router.navigate ,它工作正常,但我想在新选项卡中打开网址。

这是我在 TS 中的代码。

 goToAssessmentPage(event, assignmentId, courseId, studentId, instituteId, sectionId , assignment_submission_id) {
    event.preventDefault()
    const string:string = btoa(courseId + '-' + assignmentId + '-' + studentId + '-' + instituteId + '-' + sectionId + '-' + assignment_submission_id)
    const url: string = string + '/grader-assessment';
    window.open(url, '_blank');
  }

app.routing.ts

{
    path: ':params/grader-assessment',
    component: GraderAssessmentPageComponent
},

最佳答案

那么,您很可能需要该 url 字符串中的整个 url 树才能使 window.open 正常工作。

来自文档 ( https://angular.io/api/router/Router#createurltree )

// create /team/33/user/11
router.createUrlTree(['/team', 33, 'user', 11]);

最重要的是( https://angular.io/api/router/Router#serializeurl )

serializeUrl(url: UrlTree): 字符串

所以在你的情况下它会是这样的:

const string:string = btoa(courseId + '-' + assignmentId + '-' + studentId + '-' + instituteId + '-' + sectionId + '-' + assignment_submission_id)
const fullUrl:string = this.router.serializeUrl(router.createUrlTree([string, '/grader-assessment']));
// Then you navigate to this full url
window.open(fullUrl, '_blank');

关于javascript - 如何将编码字符串作为参数发送到 Angular 中的url字符串并在新选项卡中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59069966/

相关文章:

javascript - 尝试更改多个 Div 上的背景图像 "OnClick"

angular - 如何有条件地在 Angular 中显示下拉选项?

javascript - 仅允许文本字段中的特定数字

javascript - Angular 7 共享服务不共享

angular - Azure AD 2.0 应用程序 - 无法从 Angular 客户端访问范围

angular - 使用 Cypress 测试 Angular 时如何防止整页重新加载?

icons - @nebular 自定义菜单 (NbMenuComponent) html 不起作用

angular - 如何在其他scss文件中使用 Angular Material 主题颜色变量

javascript - 对比编辑后$resource结果修改情况

java - 比较两个时间戳天数