Как выполнить маршрутизацию в другом компоненте, когда я нажимаю на ссылку из электронного письма - PullRequest
0 голосов
/ 13 декабря 2018

Когда я нажимаю на эту ссылку http://secsystem.domain.tk/v1/resetPassword/11E8FC9 из электронного письма, я хочу открыть этот компонент ResetPassIdComponent в своем приложении

Я использую следующий код:

AndroidManifest.xml

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" android:host="secsystem.domain.tk" android:pathPattern="/v1/resetPassword/.*"></data> 
        </intent-filter>

и в routing.ts я пишу этот код:

 const routes: Routes = [
  {
    path: 'home',
    component: HomeComponent,
    canActivate: [AuthGuard],
    children: [
      {
        path: 'fp', component: FirstPageComponent
      },
      {
        path: 'profile', component: ProfileComponent
      }
    ]
  },
  {
    path: 'outsidelogin',
    component: outsideloginComponent,
    children: [
      { path: 'login', component: LoginFirstComponent },
      { path: 'register', component: RegisterComponent }
    ]
  },
    { path: 'v1/resetPasswordRequest/:id', component: ResetPassIdComponent },
    { path: '', redirectTo: '/home/fp', pathMatch: 'full' }
];

Есть ли какое-то решение для этого?

Ответы [ 3 ]

0 голосов
/ 13 декабря 2018

Шаг 1. Создайте новый пустой компонент с именем routingTest.component.ts и просто console.log ('routingTest!');в ngOnInit ().

Шаг 2. Попробуйте получить доступ к этому компоненту из URL, например, localhost / urlTest.Посмотрите, успешно ли вы console.log, перейдите к следующему шагу.

Шаг 3. Добавьте определение маршрута в ваши Маршруты с параметром, как описано ниже.

routing.ts

{ path: 'urlTest/:id', component: RoutingTestComponent}

После настройки вашего маршрута, теперь вы сможете получить параметр url.И используйте ActivatedRoute в @ angular / router, чтобы извлечь параметры, как описано здесь в документации :

routingTest.component.ts

import { Router, ActivatedRoute, ParamMap } from '@angular/router'; //import library
    Constructor(public route:Router){}
    ngOnInit(){
        let id = this.route.snapshot.paramMap.get('id');
        console.log(id);
    }

Если вы успешно используете «id» console.log, это означает, что вы можете делать с этим все, что захотите.

Любые вопросы приветствуются.Я надеюсь, что это поможет.

0 голосов
/ 13 декабря 2018

Все, что вы сделали в манифесте Android, - это все, чтобы система поняла, что она должна открывать это приложение, когда этот конкретный шаблон URL совпадает.Angular тут не при чем.Если вы хотите перейти к определенному компоненту, когда приложение открывается с определенным шаблоном URL-адреса, вы должны обработать его вручную.

Установить плагин nativescript-urlhandler и запросить URL-адрес, который использовался дляоткройте приложение в компоненте приложения и соответственно запустите навигацию в маршрутизаторе.

import { Component, OnInit } from "@angular/core";

import {handleOpenURL, AppURL} из 'nativescript-urlhandler';

@ Component ({selector: "gr-main ", template:" "}) класс экспорта AppComponent {constructor () {}

ngOnInit(){
    handleOpenURL((appURL: AppURL) => {
        console.log('Got the following appURL', appURL);
    });
 }

}

Источник: Как выполнить маршрутизацию в приложении при нажатииссылка из электронной почты

0 голосов
/ 13 декабря 2018

попробуйте так, вам нужно добавить только android:pathPrefix="/v1/resetPassword"

           <intent-filter
                android:autoVerify="true"
                tools:targetApi="m">
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="secsystem.domain.tk"
                    android:pathPrefix="/v1/resetPassword"
                    android:scheme="https" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="secsystem.domain.tk"
                    android:pathPrefix="/v1/resetPassword"
                    android:scheme="http" />
            </intent-filter>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...