我们遇到一个极端的问题,即外部应用程序要求在指向我们网站的url请求中出现特定的url参数:
const express = require('express');
const app = express();
const PORT = 5000;
app.get('/', (req, res) => {
res.sendFile('index.html', {root: __dirname });
});
app.get('/version', (req, res) => {
const myVersion = 'My version is 0.5';
res.json(myVersion);
});
app.listen(PORT, () => {
console.log(`Server running on PORT ${PORT}`);
});
这是屏幕截图:
有时,url参数将无法正确呈现,从而导致url变为:
https://stackoverflow.com/questions/ask?abc=123
我们在应用程序上运行了angular程序,它无法解析它,从而导致网页出现不必要的错误。
angular可以在应用程序到达网址之前对其进行编码吗?
我们有一个临时的https://stackoverflow.com/questions/ask?abc={{}}
重定向解决方案,但是如果我们解决了问题的根源,相信会更好。
我们已经做了大量的阅读工作,以了解如何更改模板标签,但这是一个巨大的解决方法。
我们不使用任何自定义网址变量。我们希望它在未解析nginx
答案 0 :(得分:1)
您需要将参数绑定在[queryParams]="{ 'abc':'test' }"
由于需要传递对象,因此可以在打字稿中动态创建对象。
尝试这样:
HTML :
<a [routerLink]="['https://stackoverflow.com/questions/ask']" [queryParams]="getQueryParam()">Link</a>
TS :
getQueryParam() {
var queryParam = {};
queryParam['abc'] = this.some_variable;
return queryParam;
}
答案 1 :(得分:0)
问题可能与此有关:
https://github.com/angular/angular.js/commit/5930b8ee27e441aa4422d9174dcc7eb7db30e400。
这是Angular的已知问题。
答案 2 :(得分:0)
根据研究,我们发现Drupal使用称为request_uri()的函数来渲染表单,该函数不对输出进行编码。因此,操作url在页面上加载时会导致角度错误。
我们发现的解决方案是添加重定向。