NativeScript - как отложить маршрутизацию, пока боковой ящик не закроется? - PullRequest
0 голосов
/ 14 апреля 2020

Я пишу приложение с использованием NativeScript 6.4.1 и Angular 8.

Я включил функцию SideDrawer в свой проект.

https://docs.nativescript.org/ui/components/SideDrawer/getting-started Пока все отлично работает.

Одна вещь, которую я заметил, - это то, что когда я выхожу из приложения, я выхожу из системы через SideDrawer и затем направляюсь к Первая страница в приложении. Этот переход от бокового ящика к главной странице не очень плавный.

Как подождать, пока боковой ящик не закроется, прежде чем выполнять маршрутизацию или еще сделать переход более плавным?

пример кода:

export class LogoutService {

    constructor(private routerExtensions: RouterExtensions, private sideDrawerService: SideDrawerService) {}

    public logout(): void {
        appSettings.clear();
        this.sideDrawerService.closeDrawer();
        this.routerExtensions.navigate(['landing-page'], { clearHistory: true });
    }

}

export class SideDrawerService {

    constructor() {}

    public showSideDrawer() {
        const sideDrawer = app.getRootView() as RadSideDrawer;
        sideDrawer.showDrawer();
    }

    public closeDrawer() {
        const sideDrawer = app.getRootView() as RadSideDrawer;
        sideDrawer.closeDrawer();
    }

}

Редактировать: я вижу на документация здесь, что есть некоторые события, которые запускаются, когда https://docs.nativescript.org/ns-ui-api-reference/classes/radsidedrawer#drawerclosedevent

Как мне прослушать эти события?

Я пробовал что-то подобное, но это не так работа:

public closeDrawerAsync() {

    const sideDrawer = app.getRootView() as RadSideDrawer;

    sideDrawer.drawerClosedEvent //this does not seem to exist

}

1 Ответ

2 голосов
/ 15 апреля 2020

Использование drawerClosed событие

export class SideDrawerService {
    ...
    closeDrawer (callback?: () => void) {
       const sideDrawer = app.getRootView() as RadSideDrawer;
       if (callback) {
         callback = zonedCallback(callback);
         sideDrawer.once(RadSideDrawer.drawerClosedEvent, () => {
             callback();
         });
       }
       sideDrawer.closeDrawer();
    }
    ...
}

Теперь вы можете использовать его как,

public logout(): void {
    appSettings.clear();
    this.sideDrawerService.closeDrawer(()=> {
       this.routerExtensions.navigate(['landing-page'], { clearHistory: true });
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...