Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 9

0
votes
answers
32 views
+10

無法計算如何在離子項目中添加本地js文件

0

我一直在爲這件簡單的事情而苦苦掙扎。我只想告訴我如何在離子項目中包含本地js文件。我有一個有很多功能的js文件,我希望能夠在打字稿中使用它們。我看了其他類似的問題。但是他們都沒有給出明確的答案。無法計算如何在離子項目中添加本地js文件

沙发
0
0

首先導出您所需的功能在localjs如下

yourExportedFunction = function() { 
    ... 
    }; 

module.exports = yourExportedFunction 

然後在您的打字稿文件導入如下,

import * as localjs from '../localjs'; 

localjs.yourExportedFunction() 

編輯

1日:module.exports請檢查官方文件

第2 A:嘗試使用相對路徑。

~/src/js/custom意味着相對於項目的根

/src/js/custom意味着相對於文件系統的根目錄相對於當前的TS文件

+0

1 Q

../src/js/custom的意思是:什麼是module.exports功能在JavaScript? –

+0

第二個問題:從'/ src/js/custom'導入*爲localjs給出錯誤找不到模塊「/ src/js/custom」。 –

0
votes
answers
17 views
+10

角5 - 重定向頁面主頁上的瀏覽器刷新

1

目前,當我刷新頁面從路徑類似角5 - 重定向頁面主頁上的瀏覽器刷新

http://localhost:4200/feedback

它保持在同一條路線。但我希望路由重定向到

http://localhost:4200

我看到人問如何實現刷新保持在同一條路線。所以我猜,默認的角度應該重定向到瀏覽器刷新的主頁。任何想法爲什麼我的角度默認項目這樣做,否則?

下面是我AppRoutingModule

import { NgModule } from '@angular/core'; 
import { RouterModule, Routes } from '@angular/router'; 

import { SmileyFeedbackComponent } from '../smiley-feedback/smiley-feedback.component'; 
import { FeedbackFormComponent } from '../feedback-form/feedback-form.component'; 
import { ThankYouComponent } from '../thank-you/thank-you.component'; 

const routes: Routes = [ 
    { path: '', redirectTo: '/smiley', pathMatch: 'full' }, 
    { path: 'smiley', component: SmileyFeedbackComponent }, 
    { path: 'feedback', component: FeedbackFormComponent }, 
    { path: 'thank-you', component: ThankYouComponent } 
]; 

@NgModule({ 
    imports: [ 
    RouterModule.forRoot(routes) 
    ], 
    exports: [ RouterModule ], 
    declarations: [] 
}) 
export class AppRoutingModule { } 
+0

路由器正在做你的路線告訴它做的事情。如果你想回到根目錄,那麼你需要重定向。如果你這樣做,那麼你將如何擊中「反饋」路線? –

+0

@ChrisSharp,實際上我不需要任何人通過在瀏覽器網址中輸入路徑來點擊路線。下面的代碼由AJT_82做的伎倆。我是一個角色的新手。你能告訴我RouterModule和路由器的區別嗎?我所理解的是RouterModule就像一個路由器的構造函數,無論我需要做什麼路由操作,我都必須使用路由器。它是否正確? – simplelenz

沙发
0
3

正如克里斯·夏普提到的,你的應用程序是做什麼它應該做的,路由到該URL所指向的地方,因爲你還沒有告訴它,否則。

你可以做什麼,是在你的app.component你可以在OnInit重定向到根。這意味着當應用程序(重新)初始化時,您將被重定向到根頁面。

export class AppComponent { 
    constructor(private router: Router) {} 

    ngOnInit() { 
    this.router.navigate(['']) 
    } 
} 
+0

@ JT_82,This Works。謝謝。你能簡單地告訴我RouterModule和路由器的區別嗎? – simplelenz

+0

那麼,使用RouterModule您可以爲您的應用提供路由,並且使用路由器可以實現實際的路由:) – Alex

0
votes
answers
37 views
+10

Angular2 - 無法導入http模塊

-1

Answer沒有幫助我導入http模塊沒有錯誤。Angular2 - 無法導入http模塊


$ ng version 
Angular CLI: 1.5.0 
Node: 6.11.5 
OS: linux x64 
Angular: 5.0.0 
... animations, common, compiler, compiler-cli, core, forms 
... http, language-service, platform-browser 
... platform-browser-dynamic, router 

@angular/cli: 1.5.0 
@angular-devkit/build-optimizer: 0.0.32 
@angular-devkit/core: 0.0.20 
@angular-devkit/schematics: 0.0.35 
@ngtools/json-schema: 1.1.0 
@ngtools/webpack: 1.8.0 
@schematics/angular: 0.1.0 
typescript: 2.4.2 
webpack: 3.8.1 
$ 

下面的代碼,

/* ../src/app/app.module.ts */ 
import {HttpClientModule} from '@angular/common/http'; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    HomeComponent, 
    DirectoryComponent, 
    FilterPipe, 
    LoggingService 
    ], 
    imports: [ 
    FormsModule, 
    BrowserModule, 
    HttpClientModule, 
    routing 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

和服務代碼,

/* ../src/app/data.service.ts */ 
import { Injectable } from '@angular/core'; 
import {HttpClient} from '@angular/common/http'; 

@Injectable() 
export class DataService { 

    constructor(private http: HttpClient) { } 

} 

給出了錯誤:

ERROR in src/app/data.service.ts(2,9): error TS2305: Module '"/home/../My_Websites/Youtube_sites/angular_2_playlist/ninja-directory/node_modules/@angular/http/http"' has no exported member 'HttpClient'. 

爲什麼HttpClient服務不能在服務代碼構造被注入?

+1

什麼是您正在使用的 –

+1

角版本錯誤'node_modules/@ angular/ht tp/http「'沒有導出的成員」狀態,表示你從其他地方導入它 – yurzui

+0

你在使用Systemjs嗎? – yurzui

沙发
0
1

你需要打電話給你的服務app.component.ts

import {DataService} from './data.service.ts'; 

and also give in your app.component.ts file

providers:[DataService] 

See TutorialsPoint Example for More

感謝

+0

'providers'和'bootstrap'是什麼意思?他們的目的是什麼? – overexchange

+0

Downvote from me – overexchange

0
votes
answers
37 views
+10

如何運行require(「express」);從電子應用中的TypeScript角度組件

0

我是「Angular」,「typescript」和「Electron」的新手。我用basic example of express創建了一個「server.js」文件。什麼是爲本地網絡創建本地服務器的正確方法?如何運行require(「express」);從電子應用中的TypeScript角度組件

我想用按鈕創建一個「Angular」「Electron」應用程序來運行快速服務器,但我不知道要執行「server.js」文件需要編碼什麼。

function runLocalServer() { 

    servidor = require('server.js'); // This line is a error! 

    .... 

感謝您的幫助。

+0

你能否提供一些更詳細的爲你的電子應用是試圖實現的,哪些目錄結構,你會得到什麼錯誤? –

+0

對不起,我只是想知道在Electron的Angular應用程序中如何從「typescript」運行require()來運行express。我不知道我是否清楚。謝謝! – bluesky777

沙发
0
0

TypeScript接受正常的require()以及import語法。例如:

const express = require('express'); 
// OR 
import * as express from 'express'; 
0
votes
answers
27 views
+10

打字稿:鍵入「受衆」是不能分配給鍵入「布爾」

2

問題:打字稿:鍵入「受衆」是不能分配給鍵入「布爾」

.filter(audience => audience) 

我使用VSCode,我知道爲什麼,因爲它是期待一個布爾值的投擲這個錯誤,我要回一個對象,但這是有效的Javascript,因爲我正在返回一個真值,所以引用將被強制爲真。我可以在配置中更改某些內容以使其正常工作嗎?我已經使它的工作:

.filter(audience => Boolean(audience)) 

但我寧願避免這種情況。

+0

您正在使用什麼版本的打字稿的?用我自己的測試,我沒有錯誤 –

+0

2.4.2。它實際上不在數組的過濾方法中。這來自rxjs中Observables的過濾方法。 – Christian

沙发
0
2

我很驚訝你看到這個錯誤。但是如果你需要一個布爾值,truthy/falsy價值經常被轉換爲布爾這樣的:

.filter(audience => !!audience) 
板凳
0
0

有幾種不同的方式,你可以做一個測試。由於TypeScript可以幫助您編寫更好的代碼,它對接受的內容很挑剔(這是一件好事)。這裏有幾種不同的方式來告訴某個對象是一個布爾值。

我們可以將它轉換爲anyboolean可能工作太)

.filter(audience => <any>audience) 

正如弗蘭克提到我們可以使用雙!

.filter(audience => !!audience) 
+0

你說得對,我沒有考慮'null' –

0
votes
answers
26 views
+10

在打字稿的枚舉中使用字符串變量

0

打字稿中是否可以在枚舉中使用字符串變量? 我可以使用字符串枚舉這樣的:在打字稿的枚舉中使用字符串變量

enum AllDirections { 
    TOP = 'top', 
    BOTTOM = 'bottom', 
    LEFT = 'left', 
    RIGHT = 'right', 
} 

但這代碼:

const top: string = 'top' 
const bottom: string = 'bottom' 
const left: string = 'left' 
const right: string = 'right' 

enum AllDirections { 
    TOP = top, 
    BOTTOM = bottom, 
    LEFT = left, 
    RIGHT = right, 
} 

結果與錯誤:Type 'string' is not assignable to type 'AllDirections'

+0

爲什麼要'頂部*'和*'AllDirections.TOP'? – jonrsharpe

+0

這只是一個錯誤重現的例子。事實上,我試圖從一個文件中導入一個包含所有可用操作的redux動作類型列表,並將它們分配給另一個文件中的枚舉,以便能夠使用此枚舉類型作爲reducer中的類型。 – Anton

沙发
0
1

如果你真的想這樣做,那麼你可以斷言值爲any

enum AllDirections { 
    TOP = top as any, 
    BOTTOM = bottom as any, 
    LEFT = left as any, 
    RIGHT = right as any 
} 

該pr與此相關的是,如果您將這些分配給字符串值,則需要對字符串進行斷言。這不是理想:

let str: string = AllDirections.TOP as any as string; 

或者,這是一個有點冗長,但如果你想成員有正確的類型,你可以考慮使用對象:

// remove the explicit string types so that these are typed 
// as their string literal values 
const top = 'top'; 
const bottom = 'bottom'; 
const left = 'left'; 
const right = 'right'; 

type AllDirections = Readonly<{ 
    TOP: typeof top, 
    BOTTOM: typeof bottom, 
    LEFT: typeof left, 
    RIGHT: typeof right 
}>; 

const AllDirections: AllDirections = { 
    TOP: top, 
    BOTTOM: bottom, 
    LEFT: left, 
    RIGHT: right 
}; 

另一種選擇是翻轉其中字符串存儲:

enum AllDirections { 
    TOP = 'top', 
    BOTTOM = 'bottom', 
    LEFT = 'left', 
    RIGHT = 'right', 
} 

const top = AllDirections.TOP; 
const bottom = AllDirections.BOTTOM; 
const left = AllDirections.LEFT; 
const right = AllDirections.RIGHT; 
+0

第二種解決方案對我來說很完美。謝謝! – Anton

0
votes
answers
41 views
+10

將存儲的包含html標籤的字符串轉換爲html文本格式

1

我有一個存儲Firebase數據的Angular項目。數據以字符串形式存儲在數據庫中(prdName: string;)。我想問一下,如果我在像<b>this is text</b>這樣的字符串中加入了一個html標記並將其存儲,然後將它們綁定/查看爲html文本格式,是否有可能? (文字成爲粗體)將存儲的包含html標籤的字符串轉換爲html文本格式

firebase

//service.ts 
 
getData() { 
 
    this.List = this.firebase.list('Product'); 
 
    return this.List; 
 
} 
 

 
insertProduct(Product: Product) { 
 
    this.productList.push({ 
 
    prdName: Product.prdName, 
 
    prdCategory: Product.prdCategory, 
 
    prdSup: Product.prdSup, 
 
    prdImage: Product.prdImage, 
 
    prdDescription: Product.prdDescription 
 
    }); 
 
}

//component.ts 
 
ngOnInit() { 
 
    var x = this.ListService.getData(); 
 
    x.snapshotChanges().subscribe(item => { 
 
    this.List = []; 
 
    item.forEach(element => { 
 
     var y = element.payload.toJSON(); 
 
     y["$prdKey"] = element.key; 
 
     this.List.push(y as List); 
 
    }); 
 
    }); 
 
}
<!--component.html--> 
 
<label>Product Name: </label> {{ListService.selectedProduct.prdName}}

請讓我知道,如果需要更多的片段。非常感謝你提前。

沙发
0
1

你必須使用innerHTML綁定HTML標籤:

<div [innerHTML]="ListService.selectedProduct.prdName"></div> 

檢查:https://angular.io/guide/template-syntax#!#property-binding-or-interpolation-

板凳
0
1

我在我的項目,使使用這種管道將其工作的權利

import { PipeTransform, Pipe } from '@angular/core'; 
import { DomSanitizer } from '@angular/platform-browser' 

@Pipe({ name: 'safeHtml'}) 
export class SafeHtmlPipe implements PipeTransform { 
    constructor(private sanitized: DomSanitizer) {} 

    transform(value) { 
    return this.sanitized.bypassSecurityTrustHtml(value); 
    } 
} 

然後在你想要你的html的地方你只需做

<div [innerHTML]="someHtmlContent | safeHtml"></div> 
需要

管,使信任這個網站的內容,更多有關這一點:

https://angular.io/guide/security#bypass-security-apis

0
votes
answers
23 views
+10

Angular 2谷歌地圖標記點擊事件觸發DOM在DOM中的外觀

0

所以我有一個角2應用程序應該有一個地圖,側邊欄和導航欄。該地圖應該是在側邊欄和導航欄下的所有窗口。角結構如下:Angular 2谷歌地圖標記點擊事件觸發DOM在DOM中的外觀

  1. 一個主窗口組件方含的導航欄,邊欄,圖中的模板和一個div應該彈出,當我點擊標記取屏幕的右側部分在地圖上。我將它們全部放在每個部分的一個組件中,以便輕鬆訪問其他部分中的變量。當我點擊標記時,我想在右側彈出的div不是地圖API中存在的彈出窗口;這是一個div,我硬編碼到組件的模板中,我隱藏它或根據組件中的一個標誌顯示它(我必須清楚)。

  2. ,其包括導航欄的div,邊欄DIV,地圖DIV與id="google-map,和亮點截面分度ngIf隱藏它只要在該組件的this.highlightsSection標誌被設置主-window.html模板假

這是一個數字應實現這一目標的代碼:你看這兩個處理函數

import { Component, OnInit } from '@angular/core'; 
import { Sensor } from '../entities/sensor'; 

declare const google: any; 

@Component({ 
    selector: 'app-main-window', 
    templateUrl: './main-window.component.html', 
    styleUrls: ['./main-window.component.css'] 
}) 
export class MainWindowComponent implements OnInit { 

highlightsSection: boolean = false; 

zoom: number = 14; 
lat: number = 26.67946; 
lng: number = -80.41719; 
map: any; 
marker: any; 
mapProp: any = { 
    center: new google.maps.LatLng(this.lat, this.lng), 
    zoom: this.zoom, 
    mapTypeId: google.maps.MapTypeId.SATELLITE 
}; 


constructor() { } 

ngOnInit() { 
    this.map =new google.maps.Map(document.getElementById("google-map"), this.mapProp); 
} 

toggleHighlights(): void { 
    if(!this.highlightsSection) { 
     this.highlightsSection = true; 
    } else { 
     this.highlightsSection = false; 
    } 
} 

registerMarkers(): void { 
    this.marker = new google.maps.Marker({ 
     position: {lat: this.lat, lng: this.lng}, 
     title: "Hello world!" 
    }); 
    this.marker.setMap(this.map); 
    this.marker.addListener('click', function() { 
     // What should go here to allow the marker to change the flag value of highlightsSection variable?? 
    }); 
}  
} 

this.toggleHighlights()this.registerMarkers() 我需要使用它們,如下所示我需要在側欄中有一個按鈕來觸發this.registerMarkers()之一來顯示標記(直到此時它運行良好)並在此this.registerMarkers()之內顯示標記之後我需要添加事件聆聽者點擊標記以觸發另一個toggleHighlights()函數,該函數依次顯示地圖右側的高亮div的權利部分。

的問題是,它似乎marker.addEventListener()無法觸發點擊的this.toggleHighlights(),我不明白爲什麼

我是新來的都angular2和打字稿,我已經做了類似的唯一途徑以前是通過使用jquery和DOM,但我需要有組件的概念來存儲多個標誌和變量,我不能達到這個

PS:我已經嘗試了塞巴斯蒂安agm第三方組件,它是非常有限的功能,所以我不能依靠它

如果有人幫我弄清楚這裏發生了什麼,我會很高興

+0

我很想有這樣的stackblitz或plunker。或者如果這是一個你可以分享的公共項目,我很樂意克隆並仔細觀察。 –

沙发
0
0

你可以嘗試使用閉包;如下圖所示:

registerMarkers(): void { 
    var toggler =() => { 
     // toggle the flag here 
    } 

    this.marker = new google.maps.Marker({ 
     position: {lat: this.lat, lng: this.lng}, 
     title: "Hello world!" 
    }); 
    this.marker.setMap(this.map); 
    this.marker.addListener('click', function() { 
     toggler(); 
    }); 
} 

就個人而言,我不喜歡高/推薦這個解決方案,但我認爲,這種解決辦法將工作(在最後,直到你找到一些其他的解決方案)。當我使用相同的條件時,我也遇到了類似的情況,因爲我沒有找到任何其他解決方案。

另外,請注意,我沒有發佈之前運行此代碼,但只是爲了給你提示。

所以,請儘量先下去投票... :)和命中的答案,如果這對你的作品...... :)

+0

謝謝!我會嘗試這個並告訴你。但我真的不明白爲什麼很難從點擊處理程序訪問組件變量。我想用角度1和控制器的$ scope和$ rootScope猜測起來要容易得多! –

+0

我是如何理解它是範圍和原型之間的區別的。雖然我們通常創建的所有變量和函數都在一個範圍內(全局和本地),但TS中的類屬性實際上只能通過對象引用訪問對象的原型。因此,'這'很重要! – Abhi

+0

@RamyFarid,這不適合你嗎? – Abhi

0
votes
answers
22 views
+10

ReadonlyArray在TypeScript中繼承了哪些類?

1

我有這樣的代碼段在打字稿:ReadonlyArray在TypeScript中繼承了哪些類?

const arr: ReadonlyArray<string> = [ 
    "123", 
    "234" 
]; 

arr.push("345"); 

TS編譯器顯示了一個錯誤:Property 'push' does not exist on type 'ReadonlyArray<string>'。當然很顯然,我不能改變/改變這個數組,但問題是 - 什麼是ReadonlyArray的基類?它是否繼承了標準Array類?

+0

這是隻讀 - 你不能推上新的項目。那麼它將是可寫的。 –

+0

很明顯,這個數組是隻讀的,但我的問題是要弄清楚 - ReadonlyArray是如何實現的,它是從哪個基類派生出來的 –

+0

查看回答:)鏈接到裏面的源代碼 –

沙发
0
2

https://www.typescriptlang.org/docs/handbook/interfaces.html 指出

TypeScript comes with a ReadonlyArray<T> type that is the same as Array<T> with all mutating methods removed, so you can make sure you don’t change your arrays after creation

如果你想要光源,頭部到

https://github.com/Microsoft/TypeScript/blob/master/src/lib/es5.d.ts#L978

(其定義爲線978在目前的版本)。

+0

這是一個相當普遍的答案'TypeScript來使用與Array 相同的ReadonlyArray 類型,並刪除所有變異方法。 那麼這是否意味着他們做了類似於: 'ReadonlyArray.prototype.push = null'? –

+0

很酷,謝謝! 這就是我正在尋找的。 –

0
votes
answers
30 views
+10

環在JSON數組使用打字稿

0

我想在JSON響應對象數組環在JSON數組使用打字稿

JSON響應循環:

{ 
"$id": "1", 
"Council_ID": 116, 
"number": "67", 
"subjects": [ 
    { 
     "$id": "2", 
     "subjectCode": "67", 
     "type": 4, 
    }, 
    { 
     "$id": "3", 
     "subjectCode": "67", 
     "type": 4, 
    } 
    ] 
} 

model.component.ts:

this.dataStorageService.storeSubjects(newSubject, this.meetingID) 
     .subscribe(
     response => { 
      this.dataStorageService.getCouncilId(this.meetingID).subscribe(response => { 
       this.subjectsWithID = response.json(); 
       this.sublength = this.subjectsWithID.subjects.length; 
       console.log(this.sublength); 
       for(let i = 0 ; i <= this.sublength; i++){ 
        this.typee = this.subjectsWithID.subjects[i].type; 
        this.dataStorageService.getSubjectTypeId(this.typee).subscribe(response =>{ 
         this.namesOfSub = Array.of(response.json()); 
         console.log(this.namesOfSub) 
        }); 
       } 
       // console.log(this.typee, 'bla bla'); 
      }); 
      this.addSubjectForm.reset(); 
      this.router.navigate(['/model']); 
      return true; 

這給我的錯誤: - 屬性'主題'在類型'any []'上不存在。有任何建議擺脫這個錯誤?

+0

告訴你subjectsWithID – Sajeetharan

+0

您使用的HttpClient如何申報? –

+0

@Sajeetharan的學科無法讓我看看這個Json迴應我張貼了 –

沙发
0
1

確定使用httpClient,你不能獲得屬性this.subjectsWithID.subjects,但usinh http是可能的,這是因爲httpClinet在解析結果時它確實知道你的對象的份額,你必須給出一個鍵入您的結果,或者你可以像這種訪問你的財產:

this.subjectsWithID['subjects'] 

,或者你可以指定類型使用接口:

return this.http.get<myObject>(...url) 

interface Sidebar { 
    id: number; 
    Council_ID: number, 
    number: number, 
    subjects: [... 
    } 
+0

,但現在給我錯誤無法讀取控制檯中未定義的屬性「類型」? –

+0

當使用此:this.subjectsWithID ['臣民']? –

+0

是的,但在控制檯 –