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

时间:2019-11-27 12:11:29

标签: 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
},

1 个答案:

答案 0 :(得分:1)

那么您很有可能需要该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');