在我的一个Angular 2路线的模板(FirstComponent)中,我有一个按钮
first.component.html
<div class="button" click="routeWithData()">Pass data and route</div>
Run Code Online (Sandbox Code Playgroud)
我的目标是实现:
按钮单击 - >路由到另一个组件,同时保留数据,而不使用其他组件作为指令.
这就是我试过的......
第一种方法
在同一视图中,我存储基于用户交互收集相同的数据.
first.component.ts
export class FirstComponent {
constructor(private _router: Router) { }
property1: number;
property2: string;
property3: TypeXY; // this a class, not a primitive type
// here some class methods set the properties above
// DOM events
routeWithData(){
// here route
}
}
Run Code Online (Sandbox Code Playgroud)
一般情况下我路由SecondComponent通过
this._router.navigate(['SecondComponent']);
Run Code Online (Sandbox Code Playgroud)
最终传递数据
this._router.navigate(['SecondComponent', {p1: this.property1, p2: property2 }]);
Run Code Online (Sandbox Code Playgroud)
而带参数的链接的定义是
@RouteConfig([
// ...
{ path: '/SecondComponent/:p1:p2', …
Run Code Online (Sandbox Code Playgroud) 最近我在https://angular.io/docs/ts/latest/tutorial/上开始了Angular 2教程.
然后我继续使用Angular 2 beta 8.现在我恢复了教程,最新的测试版是beta 14.
如果我只是更新npm更新一些模块(预装了教程)更新但不是Angular2(我可以看到npm ls).
如果我做npm更新角度2或npm更新angular2@2.0.0beta.14它也没有做任何事情.
据我所知,当它是一个数组时,属性的类型可以用两种方式定义.
property_name: type
Run Code Online (Sandbox Code Playgroud)
其中type可以是
Array<string>, Array<MyType>, etc. (e.g. let prop1: Array<string>)
Run Code Online (Sandbox Code Playgroud)
和
string[], MyType[], etc. (e.g. let prop1: string[])
Run Code Online (Sandbox Code Playgroud)
这两种情况有什么区别?或者我是否误解了某些东西(也许是关于<>用于铸造的东西?)
编辑,因为问题被标记为重复,我知道有任何关于任何[]的问题,但我仍然在发布之前看过它,对我来说,更多的是关于类型'任何'而不是不同的[] VS < >我问道
在我的Angular 2-Typescript应用程序中,我定义了一个接口而不是一个类来允许可选参数.
据我所知,我应该在某处实现接口
导出类myClass实现myInterface {...}
并通过new(...)实例化它
我想知道这是否是正确的方法(在Angular 2中)或者是否有更简单/更好的方法?
另外,我应该把实现放在我使用它的组件(.ts)中,接口在哪里或哪里?
我知道在Typescript中可选参数可以用问号标记.
但是,我发现实际使用new关键字实例化类的唯一方法.
问题是基于Angular 2的首发"英雄"教程类没有通过new关键字实例化,据我所知,这是由Angular内部完成的.
例如,我有这个代码:
车型/ users.ts
export class User {
id: number;
name: string; // I want this to be optional
}
Run Code Online (Sandbox Code Playgroud)
模型/模拟users.ts
import {User} from './user';
export var USERS: User[] = [
{
id: 1
// no name (I wanted it to be optional for user with id 1)
},
{
id: 2,
name: "User 2"
},
]
Run Code Online (Sandbox Code Playgroud)
服务/ user.service.ts
import {Injectable} from 'angular2/core';
import {USERS} from './../models/mock-users';
@Injectable()
export …
Run Code Online (Sandbox Code Playgroud) 我正在使用Angular Material框架开发一个纯Material Design应用程序.
但是,我不明白如何设置容器的背景颜色(例如,具有蓝色背景的登录表单).我当然可以使用CSS,但我想知道是否有一个内置的指令/主题选项来做到这一点.
如标题中所述,我如何自定义这些元素?它们似乎使用透明背景,这在大多数背景调色板上很难查看
错误如下:
XMLHttpRequest无法加载http://some_url.herokuapp.com/api/some_api/.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许来源' http:// localhost:3000 '访问.响应具有HTTP状态代码503.
在打电话时
return this._http.post(requestUrl,JSON.stringify(requestBody),requestOptions)
我曾经遇到CORS(使用Angular 1时)的麻烦,我记得一旦CORS被服务器端激活,我不得不转换http请求来解析某些HTTP头.
我很担心它应该如何工作,所以任何解释都是非常受欢迎的.
我有这个代码(用BS4文档编写):
from bs4 import BeautifulSoup
Run Code Online (Sandbox Code Playgroud)
当我运行脚本(使用python3)时,我收到错误:
ImportError: No module named 'bs4'
Run Code Online (Sandbox Code Playgroud)
所以安装BeatifulSoup:
sudo pip install BeatifulSoup4
Run Code Online (Sandbox Code Playgroud)
但是当我再次尝试运行脚本时,我得到了同样的错误.确实BS4安装在:
BeautifulSoup4 in /usr/local/lib/python2.7/dist-packages
Run Code Online (Sandbox Code Playgroud)
但我想安装并使用它与python3.3(因为有其他模块不使用python2.7).
我尝试过:
virtualenv --python=/usr/bin/python2.7 /usr/bin/python3.3
Run Code Online (Sandbox Code Playgroud)
然后再次安装BS4,但没有解决.
任何线索?提前致谢
我正在使用$ mdToast(Angular Material framework)指令在我的Angular(-Material)Web应用程序中显示几条状态消息.
当用户登录时,如果登录成功,则通过调用以下方式显示toast:
$scope.showToastMessage = function() {
var toast = $mdToast.simple()
.content("Login successful);
.action('OK')
.highlightAction(false)
.position($scope.getToastPosition());
$mdToast.show(toast).then(function(toast) {
//...
}
});
};
Run Code Online (Sandbox Code Playgroud)
登录成功后,我需要进行另一次检查(例如有效的会话cookie)并显示另一个toast消息,而不会覆盖前一个并且在实际显示前一个之后.
我在这里遇到的问题是:
解决方案可以是:
调用$ mdToast.updateContent(); (https://material.angularjs.org/#/api/material.components.toast/service/ $ mdToast)会覆盖以前的吐司消息(这不是最好的解决方案,但也没关系)但我不能弄清楚如何:
(1)选择屏幕上显示的特定吐司(假设我有几个不同呼叫显示的祝酒词),和
(2)在延迟(比如说3秒)之后更新toast消息,以显示使用户不足并且登录成功但是还有一些其他信息.
任何线索?
angular ×5
typescript ×4
cors ×1
css ×1
npm ×1
pseudo-class ×1
python ×1
python-2.7 ×1
python-3.3 ×1
ubuntu ×1