如何在角度 CLI 中接收当前路由响应?

Posted

技术标签:

【中文标题】如何在角度 CLI 中接收当前路由响应?【英文标题】:How to receive current routes response in angular CLI? 【发布时间】:2018-07-24 18:13:40 【问题描述】:

对单个应用程序使用angualar cli和nodejs,在nodejs中配置passportjs,node提供用户数据并返回带有角度端口的对象,如何在ngOnInit()接收角度路由中的此响应?

重定向网址:http://localhost:4200/api/pauth?code=4%2FAAAOF7UrUC...

我也有相同的角度路径/api/pauth 来访问数据。

对上述 URL 的响应(来自 nodejs):

"status":"0","message":"Looged in successfully","user":"_id":"5a797783cb91253f8c667232","email":"example@gmail.com","password":"ya9.GltZBYvinL7N6D6OvgQ1z2Poa7ceOO3TS7LQB-CcsT3","authType":"google","createdAt":"2018-02-06T09:38:11.965Z","updatedAt":"2018-02-06T09:38:11.965Z","__v":0

component.ts:

constructor(private http:Http, private router:Router,private httpc: HttpClient)  

ngOnInit() 
    console.log(this.router.url);
    this.http.get(this.router.url).subscribe(res => 
      this.posts = res;
      console.log(this.posts);
    );

【问题讨论】:

是否在进行 API 调用? @151291 @rohith - Angular 对 nodejs 进行 api 调用。 angular 和 nodejs 都遵循路线。并在浏览器中获取上述 url 的响应,但不知道如何在组件中接收它。 你想从 url 中获取价值? 在浏览器 url 你得到一个数据?但是当你通过 Angular 进行 api 调用时,你没有得到?检查网络是否正在发生 api 调用? @rohith - 一直通过浏览器 url 获取对象数据。 【参考方案1】:

替代解决方案:

两个端口混合时无法访问对象响应,需要使用参数从 Node JS 重定向,现在可以处理角度路由。

来自节点的示例 - api.js

var code = req.user._id;
var url = 'http://localhost:4200/pauth?id='+code;
res.redirect(url);

【讨论】:

这是什么?您的问题的一部分? 如果是这样,请把它放在你的问题中,而不是在这里。 @juancab - 这是我的替代解决方案,但无法访问响应。【参考方案2】:

我会用 httpclient 告诉解决方案,我希望你在 app.module.ts 中导入 httpclient 模块

constructor(private http: HttpClient) 
   let headers = new HttpHeaders('Content-Type': 'application/json' );
   this.options =headers;

ngOninit()
   this.getdata().subscribe(data=>console.log(data))

getdata()
   this.http.get<any>(url,
     headers:this.options,responseType:"json",observe:"response")
     .map(res =>res.body)

【讨论】:

当前网址有响应,需要手动添加吗? 不,您必须设置标头,因为您的请求返回 json

以上是关于如何在角度 CLI 中接收当前路由响应?的主要内容,如果未能解决你的问题,请参考以下文章

角度如何在路由中使用 url 映射组件?

Vue-Cli使用路由

Vue-cli-4-路由配置文件,路由进阶,二级路由

如何在角度2中默认加载子路由

vue_cli路由传参个人总结--完整代码

如何以角度在兄弟组件之间共享数据?