Report
-
Similar Content
-
By psywalker
Всем привет! Вкратце: ищу учителя-помощника по TypeScript и Vue.js. О времени занятий и цене договоримся. Пишите, пожалуйста, на почту (psywalker09@gmail.com), в ЛС в ВК (https://vk.com/psywalker84), или в ЛС (здесь на форуме)
-
By cyklop77
ищу работу angular2-разработчика. пример лучшего кода здесь: https://github.com/zlodiak/ng2_answers_web
контакты:
email: kalinin.sergey.81@gmail.com
skype: cyklop771
-
By cyklop77
Подскажите пожалуйста как в angular2 при помощи rxjs через каждые 5 секунд получать данные с сервера. Вот мой код, он работает, но есть проблема.
компонент:
import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/interval'; import 'rxjs/add/operator/switchMap'; private getUserTasks(userId): void { Observable .interval(5000) .switchMap(() => this.tasksService.getUserTasks(userId)) .subscribe( data => { this.userTasks = JSON.parse(data); console.log('userTasks', this.userTasks); } ) }; сервис:
import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Observable } from 'rxjs/Observable'; import 'rxjs/add/observable/interval'; @Injectable() export class TasksService { constructor(private http: HttpClient) { }; getUserTasks(userId): Observable<any> { return this.http.get('http://127.0.0.1:8000/app_tasks/user_tasks?user_id=' + userId); }; }
Проблема в том, что первый запрос отправляется после того как пользователь подождёт 5 секунд, глядя в белый экран. А мне нужно чтобы первый запрос отправлялся сразу после загрузки страницы.
Я мог бы повесть индикатор или спиннер, но дело в том, что, возможно, период придётся увеличить до 60 - 120 сек. Всё это время смотреть на индикатор неприятно пользователю
-
By cyklop77
помогите пожалуйста советом и направьте в правильное русло так сказать
на angular2 сделал небольшой сайт, который состоит из двух страничек: расписание и список людей. архитектурно он состоит из главного компонента и двух компонентов страничек
сайт двуязычный. для этого я в главный компонент поместил стандартный material-переключатель и связал его с глобальным сервисом. в этом глобальном сервисе содержатся переменные, которые должны быть видны из любой части сайта. в частности там хранится признак установленного в настоящий момент языка
переключатель в шаблоне главного компонента:
<mat-slide-toggle class="toggler-lang" (click)="toggleLang()" [(ngModel)]="isEnLang"></mat-slide-toggle> сервис глобальных переменных:
private isEnLang = new BehaviorSubject(false); constructor() { } getLangState(): Observable<boolean> { console.log('this.isEnLang', this.isEnLang); return this.isEnLang; }; setLangState(state): void { console.log('set isEnLang', state); this.isEnLang.next(state); }; функционал главного компонента для смены языка:
private isEnLang: boolean; constructor(private globalVarsService: GlobalVarsService) {}; ngOnInit() { this.checkLang(); }; private toggleLang() { this.isEnLang = !this.isEnLang; this.globalVarsService.setLangState(this.isEnLang); }; private checkLang(): void { this.globalVarsService.getLangState().subscribe(data => setTimeout(() => { console.log('subscribe', data); this.isEnLang = data; }, 0)); }; проблема в том, что мне приходится в каждом компоненте, в котором используется переключения языка подключать этот "глобальный" сервис и настраивать подписку получения изменения "глобальной" переменной isEnLang. и что самое страшное - этот код дублируется в каждом компоненте.
сейчас сайт состоит из двух страничек и такое дублирование кода не страшно, но по мере роста сайта будет очевидно, что решение хоть и рабочее, но неверное
подскажите пожалуйста более практичное решение
даже если остальные решения более неудобные, то всё равно расскажите про них. всегда лучше знать несколько вариантов решения проблемы
GITHUB
-
By cyklop77
ребята, помогите пожалуйста исправить кривыми руками установленный компонент из angular 2 material
я пытался запустить компонент диалога в самой простой форме. вот что у меня получилось. проблема в том, что после клика по кнопке диалог открывается шде тосбоку экрана, почти за его пределами. кроме того консоль выводит следующее сообщение об ошибке:
app.module.ts:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MdButtonModule, MdDialogModule } from '@angular/material'; import { AppComponent } from './app.component'; import { ConvDialogComponent } from './conv-dialog/conv-dialog.component'; @NgModule({ declarations: [ AppComponent, ConvDialogComponent ], imports: [ MdDialogModule, BrowserAnimationsModule, MdButtonModule, BrowserModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { } app.component.ts:
import { Component } from '@angular/core'; import { MdDialog } from '@angular/material'; import { ConvDialogComponent } from './conv-dialog/conv-dialog.component'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { selectedOption: string; constructor(public dialog: MdDialog) {}; private openMoneyConverter(): void { console.log(111); this.dialog.open(ConvDialogComponent); }; } conv-dialog.component.ts:
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-conv-dialog', templateUrl: './conv-dialog.component.html', styleUrls: ['./conv-dialog.component.css'] }) export class ConvDialogComponent implements OnInit { constructor() { } ngOnInit() { } }
-