我创建了一个带有查询参数工作的拉取请求。我会尽力解释我所做的一切。
之前的答案不起作用的原因是因为您根本没有使用路由器。您创建了一个没有路由的大型应用程序组件。为了解决这个问题,我们需要开始使用 route module,我还建议您阅读这两个教程:Routing和Routing & Navigation。
首先,我们需要更改您的index.html
,将其添加到您的<head>
:
<base href="/">
见这里为什么要补充一点,这一点很重要。
然后,由于您正在使用您的AppComponent
来显示我们创建一个新组件所需的一切,我们将称之为RootComponent
. 在您index.html
更改<my-app>
为<root>
; 它看起来像这样:
<root>Loading...</root>
现在在您的app
文件夹中,我们需要创建两个文件,第一个文件root.component.ts
如下所示:
import { Component } from '@angular/core';
@Component({
selector: 'root',
template: `<router-outlet></router-outlet>`,
})
export class RootComponent {
constructor() { }
}
看我们有<router-outlet></router-outlet>
一个模板,Angular 将根据路由注入我们的组件。
我们还需要再创建一个文件,它是main.route.ts
,它是这样的:
import { Routes, RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
export const mainRoutes: Routes = [
{ path: '', component: AppComponent }
];
export const mainRoutingProviders: any[] = [];
export const routing = RouterModule.forRoot(mainRoutes);
在这个文件中,我们说对于我们的基本路线,我们想要渲染我们的 AppComponent
我们已经创建了我们的新文件,现在我们需要告诉我们的App Module关于它们,app.module.ts
所以我们导入新文件并声明新组件。我们还需要更改我们的 boostrap 组件:
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {FormsModule, ReactiveFormsModule} from "@angular/forms";
import {AppComponent} from './app.component';
import {RootComponent} from './root.component'; // we import our new RootComponent
import {ChartModule} from 'primeng/primeng';
import {TooltipModule} from 'primeng/primeng';
import { routing, mainRoutingProviders } from './main.routes'; // We also import our Routes
@NgModule({
imports: [
BrowserModule,
ChartModule,
FormsModule,
mainRoutingProviders, // we also need to import our route provider into the module
ReactiveFormsModule,
routing, // and also import our routes declarations
TooltipModule
],
declarations: [AppComponent, RootComponent], // we declare our new RootCpmponent
bootstrap: [RootComponent] // Notice that we are now using our RootComponent to bootstrap our app
})
export class AppModule {
}
现在,这一切的地方,我们现在终于可以开始参数传递到我们的应用程序,你的AppComponent
进口Router
,ActivatedRoute
而Params
从@angular/router
让你AppComponent
看起来是这样的:
import { Component, OnDestroy, OnInit } from '@angular/core';
import { Router, ActivatedRoute, Params } from '@angular/router';
import { Subscription } from 'rxjs/Subscription';
export class AppComponent implements OnInit, OnDestroy {
private var1: string;
private var2: string;
private sub: Subscription;
constructor(
private route: ActivatedRoute,
private router: Router
) {}
ngOnInit() {
// assign the subscription to a variable so we can unsubscribe to prevent memory leaks
this.sub = this.route.queryParams.subscribe((params: Params) => {
this.var1 = params['var1'];
this.var2 = params['var2'];
console.log(this.var1, this.var2);
});
}
ngOnDestroy() {
this.sub.unsubscribe();
}
...
}
你可以在这里看到拉取请求