Angular 2 - Como navegar para outra rota usando this.router.parent.navigate('/about')
.
Parece não funcionar. Eu tentei location.go("/about");
como isso não funcionou.
Basicamente, quando um usuário faz login, quero redirecioná-lo para outra página.
Aqui está o meu código abaixo:
import {Component} from 'angular2/angular2';
import {CORE_DIRECTIVES, FORM_DIRECTIVES} from 'angular2/angular2';
import {Router} from 'angular2/router';
import {AuthService} from '../../authService';
//Model
class User {
constructor(public email: string, public password: string) {}
}
@Component({
templateUrl:'src/app/components/todo/todo.html',
directives: [CORE_DIRECTIVES, FORM_DIRECTIVES]
})
export class Todo {
model = new User('[email protected]', 'Password');
authService:AuthService;
router: Router;
constructor(_router: Router, _authService: AuthService){
this.authService = _authService;
this.router = _router;
}
onLogin = () => {
this.authService.logUserIn(this.model).then((success) => {
//This is where its broke - below:
this.router.parent.navigate('/about');
});
}
}
angular
typescript
angular2-routing
AngularM
fonte
fonte
/
em seus caminhos como ele isnt necessárioRespostas:
Roteamento de caminho absoluto
Existem 2 métodos para navegação
.navigate()
e.navigateByUrl()
Você pode usar o método
.navigateByUrl()
para roteamento de caminho absoluto:Você coloca o caminho absoluto para a URL do componente para o qual deseja navegar.
Nota: Sempre especifique o caminho absoluto completo ao chamar o roteador
navigateByUrl
método . Caminhos absolutos devem começar com um líder/
Roteamento de caminho relativo
Se você deseja usar o roteamento de caminho relativo, use o
.navigate()
métodoNOTA: É um pouco pouco intuitivo como o roteamento funciona, principalmente as rotas pai, irmão e filho:
Ou se você só precisa navegar dentro do caminho da rota atual, mas para um parâmetro de rota diferente:
Matriz de parâmetros de link
Uma matriz de parâmetros de link contém os seguintes ingredientes para a navegação do roteador:
['/hero']
['/hero', hero.id]
ou['/hero', { id: hero.id, foo: baa }]
Sintaxe semelhante a diretório
O roteador suporta sintaxe semelhante a diretório em uma lista de parâmetros de link para ajudar a guiar a pesquisa de nome de rota:
./
ou nenhuma barra inicial é relativa ao nível atual.../
para subir um nível no caminho da rota.Você pode combinar a sintaxe relativa da navegação com um caminho ancestral. Se você precisar navegar para uma rota de irmão, poderá usar o
../<sibling>
convenção para subir um nível e depois subir e descer o caminho da rota de irmão.Notas importantes sobre a relativa irrigação
Para navegar por um caminho relativo com o
Router.navigate
método, você deve fornecer oActivatedRoute
ao roteador o conhecimento de onde você está na árvore de rotas atual.Após a matriz de parâmetros do link, adicione um objeto com uma
relativeTo
propriedade configurada aoActivatedRoute
. O roteador calcula o URL de destino com base na localização da rota ativa.Da documentação oficial do roteador angular
fonte
{ path: 'home', component: Home, children: homeRoutes }
Então você quer prever que o método router:this.router.navigate(['home/address-search'])
ORthis.router.navigateByUrl(/'home/address-search')
this.router= Router;
pode confundir alguns leitores, neste caso, é uma menção a uma injeção de dependência do Router, o que me deve feitas usando esse código em vezconstructor( private router: Router )
Você deveria usar
Além de especificar o caminho da rota, você também pode especificar o nome da sua rota:
fonte
this._router.navigate(['/some-route']);
Também pode usar sem
parent
diga a definição do roteador como:
então pode navegar em
name
vez depath
Atualizado para V2.3.0
Na propriedade Routing from v2.0 name , não existe mais. definir rota sem propriedade de nome . então você deve usar o caminho em vez do nome .
this.router.navigate(['/path'])
e nenhuma barra principal para o caminho, use empath: 'about'
vez depath: '/about'
definição de roteador como:
então pode navegar por
path
fonte
name
foi preterido no tipo de rota no Angular 2.0.v2.3.0
odata
deve ser usado em vez dename
. Para obter mais detalhes -> angular.io/docs/ts/latest/guide/router.htmlfonte
Pessoalmente, descobri que, como mantemos uma
ngRoutes
coleção (longa história), encontro o maior prazer em:Na verdade, eu o uso como parte de uma das perguntas da entrevista. Dessa forma, posso obter uma leitura quase instantânea de quem está se desenvolvendo desde sempre, observando quem se contrai quando se
GOTO(1)
depara com o redirecionamento da página inicial.fonte