router.navigateByUrl
のそれぞれをクラスの関数にラップしようとしていて、その関数を関連する場所で呼び出す予定です。しかし、 'Supplied parameters'をスローすると、コールターゲットのシグネチャと一致しません。私はSOでいくつかの他のリンクをたどってきたが、どれも私の場合には指定されたパラメータが呼び出しターゲットのシグネチャと一致しませんクラスのインスタンス化でスローされました
// have wrapped navigation to home in homePage
// so wherever is needed this homePage will be called instead of
//this.router.navigateByUrl('/home');
import {Router} from '@angular/router';
export class RouterComponent{
router:any;
constructor(private rt:Router){
this.router=rt;
}
homePage(){
this.router.navigateByUrl('/home');
}
}
someComponent.ts
// Importing the newly created typescript file
import {RouterComponent} from './../../app-routing-component';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.less']
})
export class LoginComponent implements OnInit {
private ms:MainService= new MainService();
//Instantiating RouterComponent
private rt:RouterComponent = new RouterComponent(); // this line throwing error
constructor(private fb:FormBuilder) {}
someMethod(){
rt.homePage() // Calling homePage
}
//... rest of code
}
アプリ-routing.module.ts
commonRouter.ts有用であると思いません
// module where all the paths and component are declared
import {NgModule} from "@angular/core";
import {RouterModule, Routes} from "@angular/router";
import {HomeComponent} from "./home/home/home.component";
const routes: Routes = [
{
path: 'login', component: LoginComponent,
}, {
path: 'home', component: HomeComponent,
children: [{
path: "account",
component: AccountsComponent
},{
path: '**',
component: PageNotFoundComponent
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule {
}
問題を解決しました。私はangular2を学んでいます。@注射可能なものについて学びます。 – brk
ただ1つのアップデートRouterComponentをプロバイダに追加する必要があります。 – brk
それは本当ですが、 'NgModule'に登録して、それを必要とするすべてのクラスのプロバイダとして宣言しなくても、すべてのコンポーネントなどで使用することができるからです。しかし、これらのクラスは、Angularが注入可能なパラメタを解決するために同じモジュールに登録されなければなりません。 –