Вопросы с тегами [typescript]

1

голосов
1

ответ
781

Просмотры

Угловая Карма не захватывая браузер

Я существующий проект угловых 6, где тесты не работает. Как это происходит: в PhpStorm жму в контекстном меню на файл прогон file.specs.ts. Она начинается тест, открывает браузер и ничего не происходит тогда. Вот журнал Ожидание захваченном браузера ... Для того, чтобы захватить браузер с открытым HTTP: // локальный: 9876/14 10 2018 13: 04: 17,500: WARN [гранатомет]: Хром не захватили в 60000 мс, убийство. 14 10 2018 13: 04: 17,799: INFO [запуск]: При попытке запуска Chrome снова (1/2). 14 10 2018 13: 05: 17,808: WARN [запуска]: Хром не захвачены в 60000 мс, убивая. 14 10 2018 13: 05: 18,055: INFO [запуск]: При попытке запуска Chrome снова (2/2). 14 10 2018 13: 06: 18,062: WARN [запуска]: Хром не захвачены в 60000 мс, убивая. 14 10 2018 13: 06: 18,199: ОШИБКА [запуска]: Хром не удалось в 2 раза (тайм-аут). Сдаваться. Как понять, что» случилось с этими испытаниями? Я не вижу никаких ошибок о зависимости или что-то другое. Есть ли шанс найти то, что вызывает не захватывая браузер? В этом проекте все spec.tss отсутствуют (похоже, что кто-то удалил их), так что я пытаюсь запустить те which've были созданы новые компоненты / услуги. Там нет такого варианта, чтобы начать новый проект. Я должен исправить это. Любая помощь будет очень высокую оценку. Это мой файл SRC / karma.conf.js // конфигурации Karma, смотрите ссылку для получения дополнительной информации // https://karma-runner.github.io/1.0/config/configuration-file.html module.exports = функция ( конфигурации) {config.set ({BasePath: '', рамки: [ 'жасмин', '@ угловой DevKit / встроенный угловой'], плагины: [требуется ( 'карма-жасмин'), требуют ( «карма-хром -launcher '), требуют (' карма-жасмин-HTML-репортер '), требует (' кармы-покрытия-Стамбул-репортер '), требует (' @ угловой DevKit / встроенной угловой / плагины / кармы ')], клиент: {ClearContext: ложный, // оставить выход жасмин Spec Runner видимую в браузере}, coverageIstanbulReporter: {реж:. требуется ( 'путь') присоединиться (__ 'имя-каталога ../coverage '), отчеты: [' HTML', 'lcovonly'], fixWebpackSourcePaths: истинно} , репортеры: [ 'прогресс', 'kjhtml'], порт: 9876, цвет: правда, LOGLEVEL: config.LOG_INFO, autoWatch: истинный, браузеры: [ 'Chrome'], singleRun ложь}); }; {ClearContext: ложь // оставить выход жасмин Spec Runner видимого в браузере}, coverageIstanbulReporter: {реж:. Требуется ( 'путь') присоединиться (__ имя_директория, '../coverage '), сообщает: [' HTML', 'lcovonly' ], fixWebpackSourcePaths: истинные}, репортеры: [ 'прогресс', 'kjhtml'], порт: 9876, цвет: правда, LOGLEVEL: config.LOG_INFO, autoWatch: правда, браузеры: [ 'Chrome'], singleRun ложь}) ; }; {ClearContext: ложь // оставить выход жасмин Spec Runner видимого в браузере}, coverageIstanbulReporter: {реж:. Требуется ( 'путь') присоединиться (__ имя_директория, '../coverage '), сообщает: [' HTML', 'lcovonly' ], fixWebpackSourcePaths: истинные}, репортеры: [ 'прогресс', 'kjhtml'], порт: 9876, цвет: правда, LOGLEVEL: config.LOG_INFO, autoWatch: правда, браузеры: [ 'Chrome'], singleRun ложь}) ; }; LOGLEVEL: config.LOG_INFO, autoWatch: правда, браузеры: [ 'Chrome'], singleRun: ложный}); }; LOGLEVEL: config.LOG_INFO, autoWatch: правда, браузеры: [ 'Chrome'], singleRun: ложный}); };
Sergey
0

голосов
0

ответ
9

Просмотры

Karma, Angular 7, & FontAwesome issue Can't bind to 'icon' since it isn't a known property of 'fa-icon'

Can't bind to 'icon' since it isn't a known property of 'fa-icon'. When trying to run this test in people.component.spec.ts import { async, ComponentFixture, TestBed } from "@angular/core/testing"; import { PeopleComponent } from "./people.component"; describe("PeopleComponent Unit Test", () => { let component: PeopleComponent; let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [PeopleComponent] }) .compileComponents(); })); beforeEach(() => { fixture = TestBed.createComponent(PeopleComponent); component = fixture.componentInstance; fixture.detectChanges(); }); it("should create", () => { expect(component).toBeTruthy(); }); ; }) The runner shows this error: Failed: Template parse errors: Can't bind to 'icon' since it isn't a known property of 'fa-icon'. If 'fa-icon' is an Angular component and it has 'icon' input, then verify that it is part of this module. If 'fa-icon' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. This is the HTML causing the issue. I've tried to import FontAwesomeModule and FaIcon on test side and add to TestBed configuration's imports statement. I've tried to ensure the component side has the imports too. Nothing seems to work.
John Peters
0

голосов
1

ответ
9

Просмотры

Зависимости Разрешая Nestjs косяка

Не могу понять, в чем проблема моего кода. (Я новичок с nestjs, я пытаюсь узнать его, передавая некоторые приложения к нему). Журнал консоль говорит: Гнездо не может решить зависимости в UrlsAfipService (?). Пожалуйста, убедитесь, что аргумент с индексом [0] доступен в контексте ApiModule. UrlsAfipService импорт {инъекционные} из @ nestjs / общий "; импорт {AfipUrls} из @Injectable»./urls' () экспорт класса UrlsAfipService {конструктор (частный afipUrls только для чтения: AfipUrls,). {} getWSAA () {вернуться this.afipUrls.homo () wsaa; //
Marcelo J Forclaz
0

голосов
1

ответ
14

Просмотры

Как получить доступ к крючкам сеттера в функции OnClick

Я переписывание класса компонента к функциональному компоненту, но я не могу понять, как получить доступ к крючкам сеттера в функции OnClick. Заявляю крюк, как обычно, которая является переменной и сеттер для доступа к имени пользователя: экспорт функции Header (реквизит: IHeaderProps) {Const [имя пользователя, setUsername] = useState ( «»); // установить имя пользователя в заголовке, если найден в useEffect хранения (() => {Const маркер = JSON.parse (localStorage.getItem (TOKEN_NAME) || '{}'); если (token.Username) {setUsername (token.Username );}}); ...... В JSX я есть кнопка "выход". При нажатии, она вызывает функцию handleLogout, где мне нужно, чтобы установить имя пользователя в пустую строку: .... .... функция handleLogout () {... // как я могу установить имя пользователя на пустую строку здесь? } Но как я могу добиться этого? Когда это класс компоненты я имел доступ к переменному состоянию, что такое правильный способ справиться с этим с помощью крючков? Я использую машинопись с правилом «не может использовать лямбда в разметке»
melbil
1

голосов
2

ответ
511

Просмотры

Машинопись - Когда использовать целевую версию?

Я имею трудности с пониманием того, что значение целевой TSC версии (ES3 против ES5). В машинописном выходе все еще использует Array.prototype.reduce хотя я предназначаться ES3 это говорит один должен прочитать его как язык спецификация, но не четкие вещей много. Насколько я попробовал, установка --target не оказывает никакого влияния на выходе, ни сообщения предупреждения / ошибки. Я правильно думаю, что этот вариант является поддержка визуального особенность Studio?
donnut
1

голосов
3

ответ
251

Просмотры

Правильный способ сделать прикована наблюдаемую подписку

Что такое лучший способ переписывания этого кода реактивен с помощью RxJS. информация профиля; updateProfile () {пусть маркер; пусть ProfileID = 1; this.userService.getAccessToken () .map ((Рез) => {// как мне это нужно несколько раз маркер = Рез, возвращение рес}) .switchMap (= маркер доступа> this.profleService.getContactIds (маркер доступа, ProfileID)). подписаться ((RES) => {this.profleService.updateprofile (маркер, this.profileInformation, res.account.id, res.address.id) .subscribe ((данные) => {console.log (данные); // делать вещи с данными}, (ERR) => {// сделать что-то, когда эээ})}, (ERR) => {// сделать что-то, когда эээ}); })}
Microsmsm
1

голосов
1

ответ
1k

Просмотры

Ленивые Загрузка маршрутов в React С машинопись AsyncComponent

Я пытаюсь ленивыми маршруты нагрузки в React путем реализации класса AsyncCompoment как описано здесь Code Расщепление Создать Реагировать App. Ниже функция ES6 asyncComponent из учебника: импорт React, {Компонент} из «реагируют»; экспорт функция по умолчанию asyncComponent (importComponent) {класса AsyncComponent расширяет компонент {конструктор (реквизит) {супер (реквизит); this.state = {компонента: нуль}; } Асинхронной componentDidMount () {сопз {по умолчанию: компонент} = ждут importComponent (); this.setState ({компонента: компонент}); } Визуализации () {константный C = this.state.component; вернуться C? : ноль; }} Вернуть AsyncComponent; } I» ве написал эту функцию в машинописи и может подтвердить, что компоненты действительно загружается лениво. Вопрос я сталкиваюсь в том, что они не оказаны. Я был в состоянии определить, что объект компоненты всегда определен в componentDidMount крючке: //AsyncComponent.tsx асинхронной componentDidMount () {сопз {по умолчанию: компонент} = ждет importComponent (); this.setState ({компонента: компонент}); } Объект возвращается из функции importComponent обладает следующими свойствами: {MyComponent: класс MyComponent: F, __esModule: истинно} Я изменил метод componentDidMount принять первое свойство этого объекта, который является классом MyComponent. После этого изменения моего проект теперь ленивая загрузки компонентов и делают их правильно. асинхронное componentDidMount () {константный компонент = ждет importComponent (); this.setState ({компонента: компонент [Object.keys (компонент) [0]]}); } Моя догадка, что я не написал эту строку правильно в машинописи: Const {по умолчанию: компонент} = ждут importComponent (); Я вызываю метод asyncComponent как так: Const MyComponent = asyncComponent (() => импорт (./ компоненты / MyComponent)); Кто-нибудь знает, как реализовать AsyncComponent в машинописи? Я не уверен, если просто получаю индекс 0 на объекте esModule правильный способ сделать это. Const {по умолчанию: компонент} = ждут importComponent (); Я вызываю метод asyncComponent как так: Const MyComponent = asyncComponent (() => импорт (./ компоненты / MyComponent)); Кто-нибудь знает, как реализовать AsyncComponent в машинописи? Я не уверен, если просто получаю индекс 0 на объекте esModule правильный способ сделать это. Const {по умолчанию: компонент} = ждут importComponent (); Я вызываю метод asyncComponent как так: Const MyComponent = asyncComponent (() => импорт (./ компоненты / MyComponent)); Кто-нибудь знает, как реализовать AsyncComponent в машинописи? Я не уверен, если просто получаю индекс 0 на объекте esModule правильный способ сделать это.
Mike Lunn
1

голосов
1

ответ
71

Просмотры

Rewrite Recursive Function in Typescript Cannot Find Name

У меня есть следующие рекурсивная функция написана на JavaScript: функция getNestedChildren (ARR, родительские) {выпускают = []; arr.forEach (функция (пункт) {если (== item.Parent родитель) {пусть дети = getNestedChildren (обр, item.ID); если (children.length) {item.children = дети;} out.push (пункт );}}); вернуться из} // getNestedChildren Рабочего примера здесь: https://jsfiddle.net/fp1zvf0h/7/ Рефакторинга к машинописи в VS кодексе как: частные getNestedChildren (обры: объект [], родитель: номер): объект [] {испустил : объект []; arr.forEach ((пункт: {ID: номер, Родитель: количество, дети: {}}) => {если (item.Parent === родитель) {пусть дети: объект [] = getNestedChildren (ARR, item-id ); если (children.length) {item.children = детей;} out.push (пункт);}}); вернуться вне; } // getNestedChildren Я получаю ошибку компиляции Не удается найти имя «getNestedChildren» на линии: пусть дети: объект [] = getNestedChildren (обр, item.ID); Что мне не хватает?
Michael
1

голосов
1

ответ
3.8k

Просмотры

ReactJS реквизит ошибки машинописи параметров неявно имеет «любой» типа

После и адаптация учебника здесь, я врезался в препятствие при попытке определить функцию, чтобы сделать некоторый HTML. функционирования панели инструментов (реквизит) {возвращение (props.onClick ()}> Refresh); } Это ошибки в машинописи, потому что реквизита не определена. Я понимаю, почему я получаю эту ошибку, но то, что я пропускаю, какой тип должен быть реквизитом? Я считаю, что я должен тогда быть в состоянии использовать это внутри другого компонента, как это: функция App () {возвращения (оповещения ( «привет мир»)}> Test); } И реквизита только то, что я указываю. Это, казалось бы, подтверждается здесь: хотя эта ссылка не упоминает машинопись. Итак, мой вопрос: как же эта функция (т.е. перехода свойств в функцию или класс) работают с машинописью, когда, по определению, вы не»
Paul Michaels
1

голосов
1

ответ
224

Просмотры

Как удалить # в URL в угловом 5?

На самом деле я использую угловой 5 для моего проекта, мне нужно удалить # из моего URL. вот мой адрес HTTP: // локальный: 4200 / # / продукта / добавить. После того, как опубликовал в своей области он работает правильно, но в то время как обновить страницу он показывает ошибку 404 из # в моей ссылке. Можно ли сделать это? Нужно удалить # в URL
perumal N
1

голосов
1

ответ
151

Просмотры

Угловой - Дублировать идентификатор «Input»

Мой код компонента ниже импорта {Компонент, EventEmitter, OnInit, вход, выход} от «@ угловой / ядра»; импорт {Input} из @ Угловое / составитель / SRC / ядро ​​"; @Component ({селектор: 'как', templateUrl: '' ./like.component.html, styleUrls: [ './like.component.css ']}) экспорта класс LikeComponent реализует OnInit {@Input (' IsActive') IsSelected: булево; @Input ( 'likesCount') likesCount: число; @Output ( 'изменение') клик = новый EventEmitter (); конструктор () {} ngOnInit () {} isLiked () {} OnClick () {// Игнорировать ниже неполного кода, если {} еще {} this.isSelected = this.isSelected (this.isSelected!!); this.click.emit ({новое_значение: this.isSelected}); } GetStyle () {пусть стиль: строка; если (this.isSelected) {стиль = 'deeppink'; } Еще {стиль = '#ccc'; } Вернуть стиль; }} Интерфейс экспорта LikeChangedEventArgs {новое_значение: булево; } .Glyphicon-сердце {размер шрифта: 50px; цвет: #cccccc; курсор: указатель; } {{LikesCount}} Мой tsconfig.json ниже { "compileOnSave": ложь, "compilerOptions": { "BaseUrl": "./", "OUTDIR": "./dist/out-tsc", "sourceMap" : правда, "декларация": ложь, "модуль": "es2015", "moduleResolution": "узел", "emitDecoratorMetadata": правда, "experimentalDecorators": правда, "importHelpers": правда, "целевые": "es2015" , "TypeRoots": [ "node_modules / @ типы"], "Lib": [ "es2018", "дом"]}, "исключить": [ "bower_components / **", "node_modules / **", «типизации /main.d.ts»,„типизация / основной / **“,„типизация / index.d.ts“]} Однако всякий раз, когда я делаю нг служить я получаю ошибки ниже SRC / приложение / как / like.component.ts (1,42): ошибка TS2300: Дублированный идентификатора 'Input'. ЦСИ / приложение / как / like.component.ts (2,9): TS2300 ошибки: Дублированный идентификатор 'Input'. я 「WDM」: Не удалось собрать. Я пробовал все комбинации в tsconfig.json, но ничего не похоже на работу. Жутко, просто меняя места в like.component.ts файл, кажется, работает. "Lib": [ "es2018", "дом"]}, "исключить": [ "bower_components / **", "node_modules / **", "типизации / main.d.ts", «типизации / главная / * *», "типизация / index.d.ts"]} Однако всякий раз, когда я делаю нг служить я получаю ошибки ниже SRC / приложение / как / like.component.ts (1,42): ошибка TS2300: 'Input' Дублировать идентификатор , ЦСИ / приложение / как / like.component.ts (2,9): TS2300 ошибки: Дублированный идентификатор 'Input'. я 「WDM」: Не удалось собрать. Я пробовал все комбинации в tsconfig.json, но ничего не похоже на работу. Жутко, просто меняя места в like.component.ts файл, кажется, работает. "Lib": [ "es2018", "дом"]}, "исключить": [ "bower_components / **", "node_modules / **", "типизации / main.d.ts", «типизации / главная / * *», "типизация / index.d.ts"]} Однако всякий раз, когда я делаю нг служить я получаю ошибки ниже SRC / приложение / как / like.component.ts (1,42): ошибка TS2300: 'Input' Дублировать идентификатор , ЦСИ / приложение / как / like.component.ts (2,9): TS2300 ошибки: Дублированный идентификатор 'Input'. я 「WDM」: Не удалось собрать. Я пробовал все комбинации в tsconfig.json, но ничего не похоже на работу. Жутко, просто меняя места в like.component.ts файл, кажется, работает. TS (2,9): Ошибка TS2300: Дублированный идентификатора 'Input'. я 「WDM」: Не удалось собрать. Я пробовал все комбинации в tsconfig.json, но ничего не похоже на работу. Жутко, просто меняя места в like.component.ts файл, кажется, работает. TS (2,9): Ошибка TS2300: Дублированный идентификатора 'Input'. я 「WDM」: Не удалось собрать. Я пробовал все комбинации в tsconfig.json, но ничего не похоже на работу. Жутко, просто меняя места в like.component.ts файл, кажется, работает.
1

голосов
2

ответ
45

Просмотры

Получение 400 Bad Request, несмотря поймать заблуждаются angular2 +

Я разработал страницу входа в систему, где Войти успешна, когда я поставить правильный логин и пароль Логин не происходит, когда я ставлю неправильный логин или пароль, который является правильным. Тем не менее, я получаю эту ошибку: POST HTTP: // локальный: 3003 / Логин / аутентификации 400 (Bad Request) ERROR HttpErrorResponse {заголовки: HttpHeaders, статус: 400, его статуса: "Bad Request", URL: «HTTP: // локальный : 3003 / Войти / аутентификации», хорошо: ложь, ...} Все работает нормально, однако, я получаю ошибку в консоли. Как это: Я хочу, чтобы ошибка 400 плохо запрос не появляется в консоли. Как это сделать? login.component.ts Логин (данные) {console.log ( "Inside Войти"); this.authenticateObj = {имя пользователя: data.username, пароль: data.password} this.http.post ( "HTTP: // локальный: 3003 / Логин / аутентификации", }} Если (this.info.message == 'ошибка') {Alert ( 'Войти Failed'); } Еще если (this.info.status == 400) {Alert ( 'Войти Failed'); }})} Login.controller.js функцию authenticateUser (REQ, Res, следующая) {console.log ( "Внутри authenticateUser =", req.body) LoginService.authenticate (REQ, req.body) .Затем (функция (маркер) {если (маркер) {res.setHeader ( "разрешение", token.token); res.send ({сообщение: 'Войти Успешный.', ответ: маркер});} еще если (res.message == «Имя пользователя или неверный пароль ') {res.status (401) Пошлите ({сообщение:' Несанкционированное. '}); } Еще {console.log ( "внутри контроллера, иначе res.status-400"); res.status (400) Пошлите ({сообщение: 'Имя пользователя или пароль неверен'}); }}) .Catch (функция (ERR) {console.log ( "внутри контроллера, поймать res.status 400") // res.status (400) Пошлите (ERR); res.status (400) Пошлите ({ сообщение: 'Имя пользователя или пароль неверен'});}); } }); }}) .Catch (функция (ERR) {console.log ( "внутри контроллера, поймать res.status 400") // res.status (400) Пошлите (ERR); res.status (400) Пошлите ({ сообщение: 'Имя пользователя или пароль неверен'});}); } }); }}) .Catch (функция (ERR) {console.log ( "внутри контроллера, поймать res.status 400") // res.status (400) Пошлите (ERR); res.status (400) Пошлите ({ сообщение: 'Имя пользователя или пароль неверен'});}); }
Techdive
1

голосов
2

ответ
62

Просмотры

Упростить код JavaScript с помощью машинописи

Я интересно, если есть способ упростить следующий код: this._session = AmberFile.session; this._sessionPath = AmberFile.sessionPath; this._sessionDevice = AmberFile.sessionDevice; this._ssconfig = AmberFile.ssconfig; Моя попытка использования Машинопись / ES6, но это не выглядит, как это имеет чистый код: Const {сессия, sessionPath, sessionDevice, ssconfig) = AmberFile this._session = сеанса; this._sessionPath = sessionPath; this._sessionDevice = сессии; this._ssconfig = sessionPath; пусть контекст: любой = {sessionPath: this._sessionPath, сессионный: this._session, sessionDevice: this._sessionDevice}
user21
1

голосов
2

ответ
28

Просмотры

Как одна линии синтаксической машинописи работа

(Я довольно новый для узла, ES6 и машинописи. Это первое приложение на самом деле я работаю) У меня есть следующий код, который я пытаюсь ссылаться для подключения к dynamodb в машинописи, но я не в состоянии общей части синтаксис: я пытался смотреть в машинописном и ES6 синтаксис, но не сделал ничего полезного. общественное чтение GetItem = асинхронная (TABLENAME: строка, ключ: AttributeMap): Promise => this.dynamodbGet ({TableName: TABLENAME, ключ: ключ}).!? тогда (({Item}) => (п == неопределенный Пункт : ноль)); Я не могу понять синтаксис этой части кода: Promise =>
Gurpreet_Carmel_5
1

голосов
1

ответ
54

Просмотры

Угловой / Машинопись Карта с использованием последнего индекса на каждом объекте

Я пытаюсь создать массив из 120 объектов (шестигранные для карты), а затем добавить информацию к каждому из них. Когда я использую карту идентификатор должен быть индексом текущего объекта, и я могу утешать войти правильный, текущий индекс, как ожидается, но по какой-то причине, что каждый объект имеет идентификатор 119. Я смотрел на некоторые другие карты примеры на здесь и с Mozilla, и я не понимая, где я буду неправильно. Любые указатели будут весьма благодарны. экспорт класс MapComponent реализует OnInit {arrayOfObjects = Array (120) .Нанести ({}) hexTiles = this.arrayOfObjects.map ((шест, индекс) => this.createHex (шест, индекс)) конструктор () {} ngOnInit () {} createHex (гекс, индекс) {console.log ( 'Текущий индекс', индекс) гекс [ 'ID'] = индекс гекс [ 'координаты х'] = нуль-гекс [ 'координаты у' ] = Нуль шестигранного [ «отображается»] = ложные шестигранный [ «местность»] = «» шестигранная [ «детали»] = «» возвращение шестигранного}} UPDATE Я попробовал предложенное решение, но я теперь получаю массив из 120 пустых объектов , Вот обновленный код: HTML: Это ничего не отображает. {{}} шестигранные TS: Это утешит журнал "Hexs (120) [пусто × 120]" экспорт класс MapComponent реализует OnInit {hexTiles = [... Array (120)] карта ((_, я) => это. .createHex ({}, я)); Конструктор () {} ngOnInit () {console.log ( 'Hexs', this.hexTiles); } CreateHex (гекс, индекс) {гекс [ 'ID'] = индекс; шестигранный [ 'координаты х'] = NULL; шестигранный [ 'координаты у'] = NULL; гекс [ 'отображается'] = FALSE; шестигранный [ 'местность'] = ''; гекс [ 'детали'] = ''; вернуться шестигранник; }}
gv0000
1

голосов
2

ответ
38

Просмотры

Почему я могу назначить `Function` к` Interface` в машинописном?

Я читаю машинописи Справочник - Generics, и есть фрагмент кода, как показано в следующем: интерфейс GenericIdentityFn {(Arg: Т): Т; } Функция тождества (Arg: Т): Т {возвращение Arg; } Пусть myIdentity: GenericIdentityFn = идентичность; Я хотел бы знать, почему я могу присвоить идентификатор (который является функцией) переменной с типом GenericIdentityFn (который представляет собой интерфейс)?
fluency03
1

голосов
2

ответ
29

Просмотры

Как расширить и заполнить массив с одним элементом в машинописи?

В Python, если я хочу, чтобы создать массив типа [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] Мне нужно только, чтобы сделать [1] * 10 >>> [1] * 10 [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] Могу ли я добиться того же в машинописи?
Anthony Kong
1

голосов
1

ответ
491

Просмотры

Угловое материал даты-подборщик минимальный и максимальные сообщения проверки даты

Как показывают сообщения проверки для минимального и максимальной даты проверки ошибок в Угловой Материал Datepicker Даты ТРЕБУЕТСЯ Здесь Необходимая проверка была установлена. Как же я хочу показать Дату должна быть выше, чем 01/01/2019 сообщением, если пользователь вводит дату, которая меньше, чем MinDate. Я знал, что все предыдущие даты будут отключены, если мы устанавливаем MinDate. Но в этом приложении, мы позволяем пользователю ввести дату тоже! Таким образом, когда пользователь вводит дату, которая, чем предыдущая MinDate определена, я хочу, чтобы показать сообщение об ошибке! В любом случае для достижения этой цели?
Karthik Arwin
1

голосов
4

ответ
71

Просмотры

Javascript функциональность срез массива в JavaScript Maps

В JavaScript массивы, у нас есть один метод, называемый срез, который возвращает неполную копию части массива. Можно ли сделать то же самое в Js картах. Например, у меня есть одна карта в мое приложение имеющее следующие данные в виде пары ключей значения. пусть DataSet = новый Map (); {1, 'Энди'}, {2, 'Jack'}, {3, 'Смит'}, {4, 'Dave'}, ... {99, 'Sam'} Есть ли способ, чтобы нарезать карту в соответствии с началом индекса и заканчивая индекс и возвращает копию нарезанной карты (или массива) из исходной карты. Я имею представление о map.forEach ((значение, ключ) => {}), но я знаю, это всегда будет начинаться с нуля и итерации по каждому индексу. Не эффективен при работе с большим набором данных. Я хочу, чтобы один метод что-то вроде getSlicedDataFromMap (STARTINDEX, ENDINDEX) {// логика} getSlicedDataFromMap (10, 20); // возвращает {10 '
1

голосов
2

ответ
39

Просмотры

Просмотреть свойства класса

У меня есть класс машинопись определяется как: экспорт класса MyModel {ID: номер; TYPE_ID: номер; RECOMMENDED_HOURS: номер; UNASSIGNED_HOURS: номер; } В файле другой .ts создать экземпляр этого в компоненте: экспорт класса MyComponent реализует OnInit {newModel: MyModel; ngOnInit () {this.newModel = новый MyModel (); this.newModel.RECOMMENDED_HOURS = 35; this.newModel.UNASSIGNED_HOURS = 28; отладчик; } Когда я осмотреть this.newModel после того, как часы установлены, я не увидеть ID или type_id свойства, хром отладчик показывает только свойства ЧАСОВ, которые установлены. Есть в любом случае, чтобы увидеть их все, независимо от их быть установлен?
Paritosh
1

голосов
3

ответ
31

Просмотры

Установка автоматической идентификации, когда Добавить пользователя в тот же метод Update в машинописном

Я добавляю метод Add в моем CRUD Апи. Я должен использовать ту же самую форму и тот же метод обновления. Когда я нажимаю на обновление URL-адрес является деталь /: идентификатор, вместо того, чтобы при нажатии на ссылку добавить в детали / -1. В моем методе я должен контролировать, если идентификатор равен -1 идентификатор установить новый Id делает сумму между users.lenght + 1 еще я прохожу в форме идентификатор, и другие параметры для обновления. GetUser (): пустота {Const ID = + this.route.snapshot.paramMap.get ( 'ID'); this.userService.getUser (ID) .subscribe (пользователь => this.user = пользователь); если (ID === -1) {ID = this.users.length + 1; this.userService.getUser (ID) .subscribe (пользователь => this.user = пользователь); }} Я не могу назначить новый идентификатор к старому Id, потому что это константа. Что мне нужно сделать? Это моя форма в HTML: {{пользователь.
S.A.R.A.
1

голосов
1

ответ
35

Просмотры

Машинопись: Исключить не исключает мой тип

Я построил функцию, называемую компактен, что это функция сделать, чтобы удалить все falsy значение в массиве. Это Java-реализация компактен: функция компактна (обр) {возвращение arr.filter (Boolean); } Const MyData = [0, 1, NULL, 2, не определено, '']; console.log (компактный (MyData)) // => [1, 2] Это Машинопись набрав часть компактна: тип Falsy = ложь | нуль | 0 | '' | не определено; Компактный тип = Исключить; // некоторый правильный тип теста MyData = [0, 1, NULL, 2, не определено, '']; тип MyDataWithoutFalsy = Compact // => тип MyDataWithoutFalsy = 1 | 2 Теперь, вот странная часть, когда я подключить его с компактным кодом, это на самом деле не работает: функция компактна (обр: T): Compact {вернуть arr.filter (Boolean) в договоре; } Пусть MyDataWithoutFalsy = компактно ([0, 1, NULL, 2, не определено, '']); // => пусть MyDataWithoutFalsy: строка | число, но оно должно быть `number` только, потому что пустая строка должна быть исключена. Он должен быть только номер, потому что пустая строка должна быть исключена.
Joseph Wang
1

голосов
3

ответ
36

Просмотры

Маршрутизация по событию

Я хотел бы направить на конкретную страницу, когда пользователь нажимает на пункт меню. Я уже создал метод с соответствующим событием, но я не знаю, как путь к странице, которая, специфической щелкнула на меню. MenuEvent (событие: любой): любой {если (event.item.label == «Страница») {// перенаправление на «первого зрения»}} Маршруты уже определены в модуле приложения маршрутизации: константные маршруты: Маршруты = [{путь: '', pathMatch: 'полный', RedirectTo: 'первого вида'}, {путь: 'первого вида', компонент: FirstViewComponent}, {путь: 'второго вида', компонент: SecondViewComponent }} Это, кажется, что-то довольно просто, но я новичок в угловой и так до сих пор не в состоянии обернуть мою голову вокруг него.
Bendemann
1

голосов
4

ответ
64

Просмотры

Как отправить значение выбранного флажка в виде массива функции?

Im достаточно новое для работы с углового, и было интересно, если есть простой способ проверить, если первый флажок установлен. Если он выбран, я хочу передать его в функцию SaveOptions. Если более чем один выбран, я хотел бы передать их и сохранить их в массив опций. Кто-нибудь может мне помочь? Заранее спасибо! импорта {Компонент} от «@ угловая / сердцевина»; импорт {} Foreach от @ угловой / маршрутизатор / SRC / Utils / Коллекция '; импорт {Функция} от «селена WebDriver / т»; @Component ({селектор: 'приложение-корень', templateUrl: './app.component.html', styleUrls: [»./app.component.css']}) экспорт класса AppComponent {опция: любой = [] SaveOptions (х: любой []) {x.forEach (элемент => {this.options.push (элемент);});
QThompson
0

голосов
2

ответ
24

Просмотры

Как перебрать массив и получить имя, соответствующее идентификатору и присвоить результат в другой массив

Я новичок в машинопись .please помочь мне в этом. У меня есть массив, как показано ниже. пусть домашние животные = [{ID: "1", название: "животное"}, {ID: "2", название: "животное"}]; я хочу проходные домашних животных и получить имена животных из другого массива Категории где Категория: [{ID: «1», название: «Собака»}, {идентификатор: «2», название: «Кошки»}, {ид : "3", название: "Коровы"}, {ID: "4", название: "Козы"}] получить выходной сигнал, как показано ниже, // ожидаемого результата, newpets = [{ID: "1", название: "Собака "}, {идентификатор:" 2" , название: "Кошки"}]
minnu
0

голосов
0

ответ
6

Просмотры

двойное утверждение об определении класса

У меня есть следующий интерфейс экспорта интерфейса DefElement {ID: строка; Элемент: G; } Экспорт интерфейс DefEvent {типа: Т; Значение: любой; } Я хотел бы сделать класс, которые используют эти 2 интерфейса и их «привязанный» экспортного типа класса ServiceHandler {mapOfelement: Карта; = Новый Map (); groupDispatchers: Map <строка DefEvent>; = Новый Map (); Но, похоже, я не могу это сделать. У меня есть много ошибок, но я believeI не может сделать дубль. Как я могу это исправить? Является ли это возможным ?
Bobby
1

голосов
0

ответ
61

Просмотры

angular2 асинхронное выполнение

У меня несколько функций в TS файл, как показано ниже. reply_click (событие) {вар целевой = event.target || event.srcElement || event.currentTarget; вар idAttr = target.attributes.id; sessionStorage.setItem ( 'гео', idAttr.nodeValue); Значение переменного = sessionStorage.getItem ( 'гео'); вар NT = sessionStorage.getItem ( 'NTsession'); вар sesssion = sessionStorage.getItem ( 'EmployeeDetail'); вар SES = JSON.parse (sesssion); вар intEmPKNo = SES [0] .EmPKNo; вар GeoList = SES [0] .GeoList.substring (0, 3); если (GeoList = значение!) this.router.navigateByUrl ( '/ notAuthorized'); еще {this._userService.get (Global.BASE_USER_ENDPOINT + '/ EmployeeInfo? intEmPKNo =' + intEmPKNo) .do (данные => sessionStorage. SetItem ( 'EmployeeInfo', JSON.stringify (данные))) .subscribe (панель => {this.dashboard = приборная панель; this.indLoading = ложь; this.attendance ();}, ошибка => this.msg = ошибка) ; }} Посещаемость () {вар NT = sessionStorage.getItem ( 'NTsession'); вар sesssion = sessionStorage.getItem ( 'EmployeeDetail'); вар SES = JSON.parse (sesssion); вар intEmPKNo = SES [0] .EmPKNo; this._userService.get (Global.BASE_USER_ENDPOINT + / MyAttendance? intEmPKNo = '+ intEmPKNo) .do (данные => sessionStorage.setItem ( 'MyAttendance', JSON.stringify (данные))) .subscribe (панель => {этот .dashboard = приборная панель; this.indLoading = FALSE; this.PayPollHealth (); }, Ошибка => this.msg = ошибка); } PayPollHealth () {вар sesssion = sessionStorage.getItem ( 'EmployeeDetail'); вар SES = JSON.parse (sesssion); вар intEmPKNo = SES [0] .EmPKNo; this._userService.get (Global.BASE_USER_ENDPOINT + / PayrollHealth? intEmPKNo = '+ intEmPKNo) .do (данные => sessionStorage.setItem ( 'PayRollHealth', JSON.stringify (данные))) .subscribe (панель => {этот .dashboard = приборная панель; this.indLoading = ложь; this.router.navigateByUrl ( '/ приборная панель');}, ошибка => this.msg = ошибка); } Так, что HTML загружается после выполнения всех функций, за которые он принимает почти 30 секунд.
Depi
1

голосов
2

ответ
647

Просмотры

Угловое 2 приложение не работает - Пустая страница

Я использую браузер Chrome, Угловые 2 с машинописью. Ниже мой код; index.html Угловые 2 - Простые Reddit System.import ( '') app.js .then (console.log ( 'app.js Загруженные !!'), console.error.bind (консоль)); app.ts: импорт {Компонент} из "@ угловой / ядра"; импорт {NgModule} от '@ угловой / ядро'; @Component ({селектор: 'приложение-Reddit', шаблон: "Reddit Clone ...!"}) Экспорт класс AppReddit {} app.module.ts: импорт {NgModule} от '@ угловой / ядро'; импорт {AppReddit} от './app'; @NgModule ({заявление: [AppReddit], самозагрузки: [AppReddit]}) экспорт класс AppRedditModule {}; main.ts: импорт {platformBrowserDynamic} от «@ угловой / платформа браузера динамического»; импорт {AppRedditModule} от './app.module'; . PlatformBrowserDynamic () bootstrapModule (AppRedditModule); Мой код компилируется нормально с помощью команды TSC. Когда я запускаю его, я получаю приложение Loaded !! сообщение в консоли тоже, но это показывает пустую страницу. Там нет никаких ошибок или предупреждений консоли. Что мне не хватает?
Sid
1

голосов
0

ответ
220

Просмотры

Angular 2 call Observable on component Initialize

Я хочу, чтобы вызвать наблюдаемый на компонент нагрузки. В Ниже функции. У меня есть ежемесячно () в службе, в которой я посылаю данные, используя тему следующего (). Я хочу, чтобы отправить данные из компонента нагрузки, чтобы получить компонент. тока, когда я ударил выключенность кнопки с помощью (изменить) Данные события сено правильно получить функцию, но я хочу, чтобы отправить данные на компоненте нагрузки Initialize. Я попытался назвать функцию ngOnInit (), но он не работает для меня. Пожалуйста, помогите, как сделать я вызвать toggleFunc (), когда компонент идентификатор нагрузки инициализации, так что я получить правильные данные в this.service.monthData $ .subscribe в получить компонент. Я попытался ссылаюсь на подобные вопросы, но ничего не работает для меня. // компонент нагрузки ngOnInit () {если (год> 0) {this.monthData = ложь; } Еще {this.monthData = TRUE; } This.toggleFunc (this.monthData); } ToggleFunc (Val) {this.service.monthly (Val); } // Служба общественного monthData = новый предмет (); общественный monthData $ = this.monthData.asObservable (); ежемесячно (значение) {this.monthData.next (значение); } // получить компонент ngOnInit () {this.service.monthData $ .subscribe (Val => console.log (Val);); }
Jay
1

голосов
2

ответ
6.7k

Просмотры

OrderBy труба в угловых 4

Я пытаюсь написать сортировки трубы в соответствии с кодом в этой ссылке: http://www.advancesharp.com/blog/1211/angular-2-search-and-sort-with-ngfor-repeater-with-example Хотя я имеют проблемы с делом с неопределенными значениями. Моя труба правильно работает на колоннах, где нет каких-либо неопределенных значения. Но когда есть по крайней мере один неопределенное значение в работе колонки трубы странным образом. Мой код ниже: HTML шаблон: * ngFor = "пусть кандидат filteredList | OrderBy: {свойство: колонка, направление: направление}" в шаблоне HTML, чтобы выбрать столбец и направление, например: {{ 'candidates.candidates' | перевод}} порядка by.pipe.ts импорт {Труба, PipeTransform} от '@ угловой / сердцевины'; @Pipe ({имя: 'OrderBy'}) экспорт класс OrderByPipe реализует PipeTransform {Transform (кандидаты: Array, арг ?: любой): любые {кандидаты = кандидаты || []; вернуть candidates.sort (функция (а, б) {если (а [args.property] === б [args.property]) {возвращают 0;} если (а [args.property] === '' || а [args.property] === нуль || TypeOf A [args.property] === 'не определено') {возвращение 1;} если (б [args.property] === '' || B [арг. свойство] === NULL || TypeOf б [args.property] === 'не определено') {возвращают -1;} если (а [args.property] <б [args.property]) {console.log (а [args.property] + 'wartosc свойство'); возвращает -1 * args.direction;} иначе, если (а [args.property] .toLowerCase ()> б [args.property] .toLowerCase ()) {возвращают 1 * args.direction;} еще {вернуть 0;}}); }} component.ts: общественные сортировки (свойство: строка) {это. isDesc = this.isDesc!; this.column = свойство; this.direction = this.isDesc? 1: -1; } Я пытался много различных подходов, но ни один из тогда не было worinkg хорошо.
przemlat
1

голосов
2

ответ
323

Просмотры

Сохранение больше данных на Socket.io объекта в машинописи

Я обычно используется, чтобы сделать что-то вроде socket.username = имя пользователя, если не используется машинопись. Но теперь я и когда я пытаюсь сохранить его таким же образом он дает мне ошибку свойство «имя» не существует на типе «гнездо» Я знаю, это означает, что мне нужно, чтобы расширить его, но я попробовал это как так интерфейс сокеты {имя пользователя: любой} Но это не помогло, и я также попробовал это, интерфейс SocketIO {имя пользователя: любой} не повезло.
Anup
1

голосов
3

ответ
113

Просмотры

Best practices for defining an entirely new type in typescript?

У меня есть среда выполнения с несколькими константами глобально: TOP = 1 TOP_RIGHT = 2 RIGHT = 3 BOTTOM_RIGHT = 4 ИТОГ = 5 BOTTOM_LEFT = 6 ЛЕВЫЙ = 7 TOP_LEFT = 8 Это мне ясно, что эти 8 константы не только произвольные постоянные, но на самом деле множество направлений. Поэтому я хотел бы иметь их быть типа НАПРАВЛЕНИЯ, так что я могу сделать что-то вроде этого: пусть теста: DIRECTION = TOP_LEFT; пусть Foo: DIRECTION = TOP; пусть бар: DIRECTION = влево; пусть цель: DIRECTION = RIGHT; Я рассмотрел несколько вариантов, как это произошло (то есть, что положить в файле direction.d.ts): перечисления требуют тонны синтаксиса и шаблонного, чтобы просто получить от земли, поэтому они нежелательны в данном случае. Когда я использую тип ключевого слова, кажется, не в состоянии создать новый тип, который не просто псевдоним другого. (Например, тип НАПРАВЛЕНИЕ = целое число; допускается, но тип НАПРАВЛЕНИЕ; не является. Определение НАПРАВЛЕНИЯ как псевдоним целого числа является нежелательным, поскольку, несмотря на то, что они являются технически целыми числами в окружающей среде, НИЗ-2 бессмыслен, и должен привести к ошибке. Интерфейс НАПРАВЛЕНИЕ {}, кажется, приводит к желаемому поведению, что позволяет мне определить этот новый тип. Тем не менее, похоже, довольно злоупотребление системы типизации (я нахожусь под впечатлением, что интерфейсы TS были в основном эквивалентом классов.) Что большинство TS дружественного способ для достижения этой цели? позволяя мне определить этот новый тип. Тем не менее, похоже, довольно злоупотребление системы типизации (я нахожусь под впечатлением, что интерфейсы TS были в основном эквивалентом классов.) Что большинство TS дружественного способ для достижения этой цели? позволяя мне определить этот новый тип. Тем не менее, похоже, довольно злоупотребление системы типизации (я нахожусь под впечатлением, что интерфейсы TS были в основном эквивалентом классов.) Что большинство TS дружественного способ для достижения этой цели?
Stack Tracer
1

голосов
1

ответ
25

Просмотры

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

Так что я ищу, чтобы получить контроль типов в моем редакторе VScode на вложенной собственности. Я использую AngularFire и хотите применить CollectionReference к выходу реф собственности в следующем. Это полное заявление this.db.collection ( «коллекции»). Ref.doc (). Идентификатор выше, если разбить на несколько строк, как показано ниже работает отлично, и я получаю код завершения. пусть температура: CollectionReference; Темп = this.db.collection ( 'коллекции') исх. console.log (. temp.doc () ID); Как я могу преобразовать это в одну строку заявление в?
krv
1

голосов
0

ответ
274

Просмотры

Угловая: ошибка, не установлен, как должно

Я новичок в угловую 2 и угловую среду CLI. Я работаю над проектом, и когда попытался установить угловую CLI и родственное вещество. Он был установлен, но: Когда нг --version проверяется Угловое CLI: 1.6.1 Node: 6.12.2 ОС: Linux x64 Угловая: ошибка ... анимации, кли, общий, компилятор, компилятор кли, ядро, формы .. . HTTP, язык-сервис, платформа-браузер ... платформа-браузер динамический, маршрутизатор машинопись: ошибка WebPack: ошибка Я повторил установку еще раз, но до сих пор то же самое происходит в конце. Я не могу получить, где я допустил ошибку. Просьба направлять мне через это. PS: Я пытаюсь запустить существующий проект, а не создавать новую. Обновление: На следующий лидерство дается @ maddy23285 в комментариях, он работал, но новый вопрос о том, PostCSS плагин появился. Угловая CLI: 1.6.2 Node: 6.12.2 ОС: Linux x64 Угловая: 5.1.3 ... анимации, общий, компилятор, компилятор CLI, основные, форма ... HTTP, язык-сервис, платформа-браузер ... Платформа-браузер динамический, маршрутизатор @ угловой / кли: 1.6.2 @ угловой-DevKit / Build- оптимизатор: 0.0.36 @ угловой DevKit / ядро: 0.0.22 @ угловой DevKit / схемы: 0.0.42 @ ngtools / JSON-схема: 1.1.0 @ ngtools / WebPack: 1.9.2 @ схемы / угловые: 0.1. 11 @ схемные / схемы: 0.0.11 машинопись: 2.4.2 WebPack: 3.10.0 telekha01 @ telekha01-H81M-S: ~ / рабочее пространство / rajtelekha-геодезического трек-web- de11d86a7c75 $ нг служить ** NG Live Development Сервер прослушивает локальный хост: 4200, откройте браузер на HTTP: // локальная: 4200 / ** 14% строительные модули 40/48 модули 8 активна ... odules/@angular/router/esm5/router.jsUnknown ошибки из PostCSS плагин. Ваша текущая версия PostCSS является 6.0.15, но autoprefixer использует 5.2.18. Возможно, это источник ниже ошибки.
Yashwanth M
1

голосов
0

ответ
442

Просмотры

Угловой - Как перейти к элементу формы в реактивных формах?

У меня есть родительский компонент, который представляет собой таблицу пользовательских данных. Я создал дочерний компонент для каждой строки в этой таблице. Таблица выглядит следующим образом: родительский компонент HTML: Инструмент Роль пользователя (ы) в течение моего ребенка компонента (TR), у меня есть аб вход, который я пытаюсь назвать с formControlName = «Роль». Детский компонент HTML: Вот изображение текущей структуры формы: Это полная форма, которая окружает компонент ребенка и также передается в компонент ребенка. Это то, что я итерация в родительском компоненте. Каждый TR является «задачей». Это то, что я пытаюсь определить в моем детском компоненте. Я хочу назвать свой вход «Роль» через formControlName. Вопрос Я бегу в том, что когда я добавить formControlName на этой текущей структуры, я получаю сообщение об ошибке Ошибка ошибке: Не удается найти элемент управления с названием: «Роль». Как правильно гнездо этого входа в моем детском компоненте, так что он находится в правильном положении, что позволяет мне назвать это? Я считаю, как это в настоящее время настроен, он считает, что formControlName = «Роль» на родительском уровне на, поэтому он не может найти его. Обновление 1: Вот как строится форма: родительский компонент: this.intakeForm = this.fb.group ({запрашивающий: [ '', Validators.required], requestJustification: [ '', Validators.required]}); // Поместить новую форму группу для наших задач массив generateTask (пользователь, инструмент) {сопзЬ управление = this.intakeForm.controls [ «задачи»]; control.push (this.newTaskControl (пользователь, инструмент))} // Возвращает вид группу newTaskControl (пользователя, инструмент) {вернуть this.fb.group ({Пользователь: пользователь, инструмент: инструмент, Роли: this.fb.array ([])})} ТР Компонент: @Input ( 'taskTR') строки; @Input ( 'щ') щ; @Input ( 'intakeForm') intakeForm: FormGroup; // Добавить новую роль addRole ($ события, задача) {Пусть T = task.get ( 'роли') управляет как FormArray. t.push (this.newRoleControl ($ события))} // Возвращает форму группы newRoleControl (роль) {вернуться this.fb.group ({Роли: [роль, Validators.required], Действие: [нуль, Validators.required ]})} Обновление 2 @Chau Tran - Я попытался вложенности это так только с задачами и просто роли, а затем оба. Для примера TaskRowComponent.html: 8 ERROR Ошибка: Не удается найти элемент управления с пути: «задачи -> Роли, ERROR Ошибка: Не удается найти элемент управления с путем: „задача -> Роли -> Роль“ Update 3 @ Чау Tran - Я создал свой HTML, как это. Это дает следующие ошибки: ERROR Ошибка: Не удается найти элемент управления с пути: 'задачи -> 0 -> Роли -> 0' и ERROR Ошибка: Не удается найти элемент управления с пути: «задачи -> 0 -> Роли -> 0 -> Роль'. Я думаю, что это ближе, но я не уверен, почему он не работает. Появляется быть правильным путем. Обновление 3 @ Чау Tran - Я создал свой HTML, как это. Это дает следующие ошибки: ERROR Ошибка: Не удается найти элемент управления с пути: 'задачи -> 0 -> Роли -> 0' и ERROR Ошибка: Не удается найти элемент управления с пути: «задачи -> 0 -> Роли -> 0 -> Роль'. Я думаю, что это ближе, но я не уверен, почему он не работает. Появляется быть правильным путем. Обновление 3 @ Чау Tran - Я создал свой HTML, как это. Это дает следующие ошибки: ERROR Ошибка: Не удается найти элемент управления с пути: 'задачи -> 0 -> Роли -> 0' и ERROR Ошибка: Не удается найти элемент управления с пути: «задачи -> 0 -> Роли -> 0 -> Роль'. Я думаю, что это ближе, но я не уверен, почему он не работает. Появляется быть правильным путем.
SBB
1

голосов
2

ответ
321

Просмотры

Ngrx: Свойство '[Symbol.observable] отсутствует в типа «магазин » Ошибка

Я использую NGRX v4.1.1 в угловом v5 приложение (с «strictNullChecks»: правда, хотя это, кажется, не имеет значения). Я вижу ошибку в магазине. Учитывая следующие: showLists: Наблюдаемое; конструктор (частный магазин: Магазин) {} ngOnInit () {this.showLists = this.store.select ( 'contactsFeature', 'contactsReducer', 'showListsPanel'); } Машинопись поднимает ошибку на this.store.select (): Type «Магазин» не может быть преобразован в тип «Наблюдаемый». Свойство '[Symbol.observable] отсутствует в магазине «» типа. Этот метод выбора кусочком магазина (используя .select) и присваиваем его переменной типа наблюдаемого официально указано в документации (я на самом деле вижу, что они обновили документацию к ngrx v5 рекомендованное API, но v5 hasn» т был выпущен еще, так что я связан со следующим самой последней версией документации). Проблема заключается в том, что store.select () имеет тип возвращаемого магазина, который несовместим с наблюдаемым. Это «официальный» метод, однако, взаимодействуя с Маркета (я думаю). Так что мне интересно, что происходит не так. Если отключить strictNullChecks, я по-прежнему работать в ошибку. Ошибка выдвинулась в проекте я вернусь к через месяц прочь, и я не могу определить, когда именно, он начал (или почему, очевидно). Любые предложения приветствуются :) PS: Машинопись не позволит мне бросить возвращение .select () к наблюдаемым. Обновление Обновление НПЙ дал мне лучшее сообщение об ошибке. Похоже, что интерфейс либо rxjs был обновлен, или, возможно, ngrx имеет. Ошибка в приложениях / координации / SRC / приложение / контакты / контакты-инструменты. component.ts (21,5): ошибка TS2322: Type 'Магазин' не может быть назначен для типа 'Наблюдаемый'. Виды собственности «подписываться» являются несовместимыми. Тип '{(наблюдатель ?: NextObserver | ErrorObserver | CompletionObserver | недеформированной ...' не может быть назначен для типа «{(наблюдатель: наблюдатель): Подписка; (onNext: (значение: логическое) => недействительным, OnError ?: (( . Типы параметров „эээ ... наблюдателя“ и „наблюдателя“ несовместимы типа. наблюдатель "не может быть назначен для типа„NextObserver | ErrorObserver | CompletionObserver |“. Тип„не определено наблюдатель“не может быть назначен для типа„CompletionObserver“ . Виды собственности завершенными несовместим типа. «(() => Недействительного) | неопределенный» не может быть назначен для типа «() => недействительным. Тип «не определено» не может быть назначен для типа '() => пустота.
John
1

голосов
3

ответ
102

Просмотры

unable to create new object and use export class in angular2

Ниже Классно UserDetails :: экспорт классной UserDetails {имя: строка; PHONENUMBER: строка; электронная почта: строка; пароль: строка; } Ниже служба, в которой используется UserDetails :: импорт {Инъекционный} от «@ угловая / сердцевина»; импорт {HttpClient, HttpHeaders} от '@ угловой / общий / HTTP'; импорт {} Наблюдаемые из 'rxjs / Наблюдаемые'; импорт {UserDetails} от './_models/index'; 'Rxjs / добавить / оператор / карта' Импорт @Injectable () экспорт класса AuthenticationService {личное loginUserUrl = "HTTP: // локальный: 8082 / TodoApp / Логин"; конструктор (частный HTTP: HttpClient) {// пусть пользователя = новые UserDetails (); } Логин (адрес электронной почты: строка, пароль: строка) {console.log ( "в службы входа"); пусть пользователь = новый пользователь (); user.email = электронная почта; user.password = пароль; вернуться this.http.post (this.loginUserUrl, пользователь); .map (пользователь => {// Войти успешно, если есть JWT маркер в ответе, если (пользователь && user.token) {// подробнее магазин пользователя и JWT маркер в локальном хранилище, чтобы пользователь вошел между обновления страницы localStorage.setItem ( 'CurrentUser', JSON.stringify (пользователь));} возвращение пользователя;}); }} Ошибка :::: eferenceError: UserDetails не определена в AuthenticationService.login (WebPack-внутренний: ///../../../../../src/app/_services/authentication.service. TS: 25) лексема) {// подробнее магазин пользователя и JWT маркер в локальном хранилище, чтобы пользователь вошел между обновления страницы localStorage.setItem ( «CurrentUser», JSON.stringify (пользователь)); } Возвращать пользователю; }); }} Ошибка :::: eferenceError: UserDetails не определена в AuthenticationService.login (WebPack-внутренний: ///../../../../../src/app/_services/authentication.service. TS: 25) лексема) {// подробнее магазин пользователя и JWT маркер в локальном хранилище, чтобы пользователь вошел между обновления страницы localStorage.setItem ( «CurrentUser», JSON.stringify (пользователь)); } Возвращать пользователю; }); }} Ошибка :::: eferenceError: UserDetails не определена в AuthenticationService.login (WebPack-внутренний: ///../../../../../src/app/_services/authentication.service. TS: 25)
Ragini Patil
1

голосов
0

ответ
39

Просмотры

Validation not working and Save button is not enabled

Only if I enter a value in Secondary-phone field, the save button gets enabled and the other issue is secondary phone number needs to be validated but it's not a required field. @Html.Sitecore().Field("Zip Label", profileItem) Zip Required @* @Html.Sitecore().Field("Zip Required", profileItemm) *@ Enter a valid zip code @Html.Sitecore().Field("Phone Label", profileItem) @Html.Sitecore().Field("Phone Required", profileItem) Enter a valid phone number @Html.Sitecore().Field("Mobile Phone Label", profileItem) @Translate.Text("(optional)") Enter a valid phone number @Html.Sitecore().Field("Save Changes Button", profileItem) @Html.Sitecore().Field("Cancel Button", profileItem) @Html.Sitecore().Field("Edit Contact Information", profileItem) @Component({ selector: 'profile-app', templateUrl: '/apps/customer-portal/profile/profile-component', providers: [ProfileService, PasswordValidationService, UserService], }) export class ProfileComponent implements OnInit { constructor(private fb: FormBuilder, private userService: UserService, private profileService: ProfileService, private passwordValidationService: PasswordValidationService) { this.editInfoForm = this.fb.group({ street: ['', Validators.required], city: ['', Validators.required], country: '', state: '', email: ['', [ Validators.required, validateEmail ]], zip: ['', [ Validators.required, validateZip ]], phone: ['', [ Validators.required // validatePhone ]], 'secondary-phone': ['', validatePhone ] }); } toggleEditDetails() { this.successPassword = false; this.failPassword = false; this.successUsername = false; this.failUsername = false; if (this.editDetails !== null) { this.editDetails = null; return; } this.editDetails = new Details(); Object.assign(this.editDetails, this.details); } saveEditDetails() { this.whichButton = "details"; this.save({ userName: this.editDetails.username, contentLanguage: this.editDetails.language }, profile => { this.toggleEditDetails(); }); } toggleEditCommunicationPreferences() { if (this.editCommunicationEmail !== null) { this.editCommunicationEmail = null; return; } this.editCommunicationEmail = this.communicationPreferences.email; } toggleEditContactInformation() { this.successContactInfo = false; this.failContactInfo = false; if (this.editContactInformation !== null) { this.editContactInformation = null; return; } this.editContactInformation = new ContactInformation(); Object.assign(this.editContactInformation, this.contactInformation); } saveEditContactInformation(data: any) { this.whichButton = "contactinfo"; this.save({ // firstName: data.firstName, // lastName: data.lastName, // title: data.title, mailingStreet: data.street, mailingCity: data.city, mailingState: data.state, mailingPostalCode: data.zip, mailingCountry: data.country, phone: data.phone, mobilePhone: data['secondary-phone'], email: data.email }, profile => { this.toggleEditContactInformation(); }); } private save(profile: IProfile, success: (profile: IProfile) => any) { if (this.saving) return; this.saving = true; this.profileService.save(profile) .then(profile => { this.mapProfile(profile); success(profile); this.saving = false; if (this.whichButton === "details") this.successUsername = true; if (this.whichButton === "contactinfo") this.successContactInfo = true; }).catch(() => { this.saving = false; if (this.whichButton === "details") this.failUsername = true; if (this.whichButton === "contactinfo") this.failContactInfo = true; }); } ngOnInit() { this.busy = this.profileService.get() .then(profile => { this.mapProfile(profile); this.editInfoForm.setValue({ street: profile.mailingStreet, city: profile.mailingCity, country: profile.mailingCountry, state: profile.mailingState, email: profile.email, zip: profile.mailingPostalCode, phone: profile.phone, 'secondary-phone': profile.mobilePhone }); }); } formChanged() { this.editInfoForm.valueChanges .subscribe(data => this.onValueChanged(data)); } onValueChanged(data?: any) { if(this.editInfoForm.get('country').value === 'UNITED STATES') { this.phoneMax = 12; this.editInfoForm.controls['phone'].setValidators([Validators.required, Validators.minLength(12), Validators.maxLength(12)]); // Length 10 digits + 2 '-' } else { this.phoneMax = null; this.editInfoForm.controls['phone'].setValidators([Validators.required]); } var sSecPhone = ''; sSecPhone = this.editInfoForm.get('secondary-phone').value; if (this.editInfoForm.get('country').value === 'UNITED STATES') { this.phoneMax = 12; this.editInfoForm.controls['secondary-phone'].setValidators([Validators.required, Validators.minLength(12), Validators.maxLength(12)]); // Length 10 digits + 2 '-' } else { this.phoneMax = null; this.editInfoForm.controls['secondary-phone'].setValidators([Validators.minLength(6), Validators.maxLength(20)]); } } ngAfterViewChecked() { this.formChanged(); } } thanks Karthey
Karthey Sundarem
1

голосов
1

ответ
86

Просмотры

Почему мой метод не дожидаясь обещание решить, прежде чем вернуться?

Я пытаюсь создать массив, заполненный именами Merchant, каждый из которых имеет идентификатор элемента. Я проверяю, если строка имеет значение первого, так как я не знаю, сколько продавцов будет в списке, за исключением, что там будет меньше, чем 20. Я хочу, чтобы вернуть массив, так что я могу сортировать его и выполнить другие действия для валидация. Обещание не ждет, чтобы решить, прежде чем вернуться. Я могу видеть здание массива, но я хочу, чтобы вывести окончательный список Banamex Merchant, Dashboard Demo, электронные услуги Merchant, Германия Merchant, Global Канада Merchant, Бизнес-Мишель, Paytrace Merchant, TestMerchant Как вы можете видеть ниже, различные способы, я стараюсь вывести окончательный список возвращается перед списком даже построил, хотя я построил обещание и звоню .then () возвращает ответ в моем это () заявлении. merchants.po. } Вернуть решительность (список); }); } DoBuild () {this.buildMerchantListArray () .then ((список: строка []) => {возвращение console.log ( 'doBuild:' + список);}); } / ** * Получить таблицу элемент для имени Торговца рядка я * @param я * @returns {ElementFinder} * / getMerchantName (я: номер): ElementFinder {возвратный элемент (by.id ( 'товарности' + я + -Название')); }} Merchants.e2e-spec.ts импорта {FooterParams} от»../../../../components/footer/footer.params'; импорт {} Footer от '../../../../components/footer/footer.po'; импорт {} Logo из '../../../utility/logo/logo.po'; импорт {LoginParams} от»../../ .. /authentication/login/login.params'; импорт {LoginPage} от '../../../authentication/login/login.po'; импорт {AppPage} от '../../../../app.po'; импорт {Header} от '../../../dashboard/header/header.po'; импорт {ElementFinder} от 'транспортир'; импорт {MerchantsPage} от './merchants.po'; импорт {MerchantsParams} от»./merchants.params'; описывают ( 'Торговцы Страницы Dashboard App', () => {пусть приложение: AppPage, пусть логин: LoginPage, пусть навигации: заголовок, пусть страницы: MerchantsPage; beforeAll (() => {Навигационная = новый заголовок (); приложение = новый AppPage (); войти в систему = новый LoginPage (); страница = новый MerchantsPage (); app.navigateTo ( 'панель'), то (() => {login.checkAuthentication (LoginParams.user, LoginParams.. user_pwd); }); }); beforeEach (() => {Logo.getLogo () нажмите (), а затем (() => {navigation.clickAdminDropdown (), то (() => {navigation.clickMerchants ();... ожидать (page.getMerchantsHeader () . .getText ()) toContain (MerchantsParams.merchantsHeaderText); Footer.getFooter (), а затем ((сноска:. ElementFinder) => {(. ожидать (footer.getText ()) toContain (FooterParams.footer));}); });});}); он ( 'следует проверить представление списка Торговцы в алфавитном порядке по имени', () => {Promise.resolve (page.buildMerchantListArray ()), то ((обр) => {console.log ( 'мой список:'. + обр );}); page.doBuild ();. page.buildMerchantListArray (), то ((ответ) => {Console.log ( 'ответ:' + ответ); }); }); }); Консоль Выход Жасмин начал свой список: doBuild: Ответ: Список здания: TestMerchant здания список: Paytrace Merchant, TestMerchant здания список: Мишель Бизнес, Paytrace Merchant, TestMerchant здания список: Global Канада Merchant, Мишель Бизнес, Paytrace Merchant, TestMerchant здания список: Германия Торговец, Global Канада Merchant, Мишель Бизнес, Paytrace Merchant, TestMerchant список здания: электронные услуги Merchant, Германия Merchant, Global Канада Merchant, Бизнес-Мишель, Paytrace Merchant, TestMerchant здание списка: Dashboard Demo, электронные услуги Merchant, Германия Merchant, Global Канада Merchant, Мишель Бизнес, Paytrace Merchant, TestMerchant здания список: Banamex Merchant, Dashboard Demo, электронные услуги Merchant, Германия Merchant,
M. Deem
1

голосов
1

ответ
305

Просмотры

angularfire2, push/update data to specific child/key only

У меня есть функция, чтобы передавать данные, и я еще два свойства, которые должны быть втягиванием / обновлено / сохраняются в том же клавишу. Есть percentMale и percentFemale. Мне нужно поставить представленный результат для этих двух свойств в одном ребенке / ключе. Скажем, ключ L2Jq0Tg4JOS66F786pT. мужчины: число = 0; женщины: число = 0; percentMale; percentFemale; insertdata (данные: App) {если (data.data1 == 'Мужской') {this.male ++; } Еще если (data.data1 == 'Женский') {this.female ++; } This.percentMale = this.male / (this.male + this.female) * 100; console.log ( 'percentMale', this.percentMale + '%'); this.percentFemale = this.female / (this.male + this.female) * 100; console.log ( 'percentFemale', this.percentFemale + '%'); this.dataList.push ({data1: data.data1, data2: data.data2, data3: data.data3, время: новая Дата () GetTime ()});. this.dataList.push ({percentMale: this.percentMale, percentFemale: this.percentFemale,}); // если ключ уже существует //this.dataList.update(data.$key, {// percentMale: this.percentMale, // percentFemale: this.percentFemale, //}); } Функция я сделал причины более percentMale и percentFemale хранятся отдельно и таблица показывает ненужные строки. может кто-нибудь помочь мне понять это, пожалуйста? пожалуйста, дайте мне знать, если требуется больше сниппеты. } Функция я сделал причины более percentMale и percentFemale хранятся отдельно и таблица показывает ненужные строки. может кто-нибудь помочь мне понять это, пожалуйста? пожалуйста, дайте мне знать, если требуется больше сниппеты. } Функция я сделал причины более percentMale и percentFemale хранятся отдельно и таблица показывает ненужные строки. может кто-нибудь помочь мне понять это, пожалуйста? пожалуйста, дайте мне знать, если требуется больше сниппеты.
Wira Xie

Просмотр дополнительных вопросов