我在Ionic 2的屏幕上有2个按钮,我想在屏幕中间(水平和垂直对齐)将它们对齐在一起(一个在另一个上面,但在一起).
我想使用离子网格,无填充,边距,浮点数或百分比.
所以我有这个
<ion-content>
<ion-grid>
<ion-row>
<ion-col text-center>
<button>button 1</button>
</ion-col>
</ion-row>
<ion-row>
<ion-col text-center>
<button>button 2</button>
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
Run Code Online (Sandbox Code Playgroud)
随着<ion-col text-center>我可以水平对齐它们到中心,但是对于垂直对齐我不能看到任何东西,我可以申请,所以我尝试这样做:
ion-grid {
justify-content: center;
}
Run Code Online (Sandbox Code Playgroud)
但什么都没发生.我检查过,这是应用于页面,但由于某种原因它不起作用.有任何想法吗?
我正在研究webpack和angular-cli,即使angular-cli应该使用webpack,webpack.config.js当我创建一个新项目时,我看不到任何文件ng new
有人知道这在angular-cli中是如何工作的吗?
如果我想将非单例服务注入 Angular 中的另一个非单例服务,该怎么办?
假设我有一个ComponentA使用ServiceA这样的
@component({
selector: "componentA",
providers: [ServiceA]
})
export class ComponentA {
constructor(private serviceA: ServiceA) {}
}
Run Code Online (Sandbox Code Playgroud)
现在,ServiceA也取决于ServiceB,所以我需要注入它
@Injectable()
export class ServiceA {
constructor(private serviceB: ServiceB) {}
}
Run Code Online (Sandbox Code Playgroud)
我将如何/在哪里声明我的ServiceB? 在模块中?在那种情况下,那会是一个单身人士吗?
如果我将它添加到提供程序中,ComponentA它可以正常工作,但是我需要知道ComponentA这ServiceA取决于ServiceB,这对我来说似乎不太好。
谢谢!
我在Java中使用一个非常简单的httpServer来进行GET,POST,PUT和DELETE的api休息.我正在使用基本身份验证,我有几个类Authentication.java和Authorisation.java,我用它来验证和检查用户的权限.
所以,问题是我希望所有用户(经过身份验证)能够从我的api休息中获取信息,但只有具有某些特权的用户才能进行POST,PUT和DELETE.那我该怎么办呢?
这就是我得到的
public class Server {
private static HttpServer server;
public static void start() throws IOException {
server = HttpServer.create(new InetSocketAddress(8000), 0);
HttpContext ctx = server.createContext("/users", new UserHandler());
ctx.setAuthenticator(new ApiRestBasicAuthentication("users"));
server.start();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的ApiRestBasicAuthentication
public class ApiRestBasicAuthentication extends BasicAuthenticator {
private UserAuthentication authentication = new UserAuthentication();
public ApiRestBasicAuthentication(String realm) {
super(realm);
}
@Override
public boolean checkCredentials(String user, String pwd) {
int authCode = authentication.authenticate(user, pwd);
return authCode == UserAuthentication.USER_AUTHENTICATED;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,检查凭据仅检查用户是否经过身份验证.但我想检查一下,如果方法是POST,DELETE或PUT,我还应检查具体的凭据.但是如何在ApiRestBasicAuthentication中获取该方法?我在我的处理程序类中这样做
public void handle(HttpExchange httpExchange) throws IOException { …Run Code Online (Sandbox Code Playgroud) 我想在另一个组件中创建一些动态组件,但不仅仅是一次,很多次。而且这个数字也是动态的。
所以我使用 ComponentFactoryResolver 创建组件,然后使用 ViewChild 动态注入该组件。正如我所说,问题是我需要在很多地方这样做,所以我需要使用 ViewChildren 来检索所有引用并注入组件(使用特定的输入数据)。
我有一个 plunker,我将问题减少到我需要的程度。我有一个组件,它传递了一个数据数组和要创建的组件的类型。
@Component({
selector: 'my-app',
template: `
<div>
<my-parent [data]="rows" [inner]="component">
</my-parent>
</div>
`
})
export class AppComponent {
rows = [
{ name: 'data1' },
{ name: 'data2' },
{ name: 'data3' },
{ name: 'data4' }
];
component = ChildComponent;
}
Run Code Online (Sandbox Code Playgroud)
在我的父级中,我为作为参数接收的数据中的每个元素显示一行,而且,我想在每一行下方显示另一行,该类型的组件也作为参数传递。
举个例子,最重要的是,我正在为一个组件做这件事,在那里我传递 name='TOTAL'。所以我使用 an<ng-container #entry>来检索引用并注入组件。
我尝试对动态参考进行相同的操作,但它不起作用。我创建了一个指令 Host 以便我可以使用具有特定 id 的 ViewChildren 检索它,但是当我尝试动态创建组件时,它不起作用。
这是代码
@Directive({
selector: 'host'
})
export class Host {
@Input() id: string;
}
@Component({
selector: …Run Code Online (Sandbox Code Playgroud) 我有一个Angular应用程序,它使用webpack作为模块捆绑器.此应用程序还使用一些其他项目的资产(图像,字体,样式),这些项目作为node_modules导入.
我的应用程序的结构是这样的
src/
app/
...
stylesheets/
application.scss
Run Code Online (Sandbox Code Playgroud)
现在,在我的scss中,我有一些对图像的引用src="/images/...",这些图像位于node_modules/my_assets/images中,所以我使用了copy-webpack-plugin将图像包含在捆绑时间中
new CopyWebpackPlugin([
{ from: 'node_modules/my-assets/images', to: 'images' },
{ from: 'node_modules/my-assets/favicons', to: 'favicons' },
Run Code Online (Sandbox Code Playgroud)
这工作正常.
问题现在是字体.我有相同的结构,但当样式表引用时,字体现在具有相对URL./fonts/Open-Sans-300/Open-Sans-300.eot
所以我试着和以前一样
new CopyWebpackPlugin([
{ from: 'node_modules/my-assets/images', to: 'images' },
{ from: 'node_modules/my-assets/favicons', to: 'favicons' },
{ from: 'node_modules/my-assets/fonts', to: 'fonts' }
])
Run Code Online (Sandbox Code Playgroud)
这不起作用.如果我直接在/ src/stylesheets文件夹中手动复制/ fonts文件夹,它可以正常工作.我猜这是因为它是相对的我没有复制我必须的文件夹,所以我尝试了很多变化:
{ from: 'node_modules/my-assets/fonts', to: '/fonts' },
{ from: 'node_modules/my-assets/fonts', to: './fonts' },
{ from: 'node_modules/my-assets/fonts', to: 'src/stylesheets/fonts' },
{ from: 'node_modules/my-assets/fonts', to: '/src/stylesheets/fonts' }
Run Code Online (Sandbox Code Playgroud)
这些都不起作用.知道为什么不呢?我该怎么写呢?
我还要提一下,我有一个字体加载器
{
test: …Run Code Online (Sandbox Code Playgroud) 我在Angular 2中测试了我的QuickStart教程版本,我在其中使用了一个bundle js文件.index.html是这样的:
<html>
<head>
<title>Angular 2 QuickStart Deploy</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="css/styles.css">
<!-- 1. Load libraries -->
<!-- Polyfill(s) for older browsers -->
<script src="lib/shim.min.js"></script>
<script src="lib/zone.js"></script>
<script src="lib/Reflect.js"></script>
<script src="lib/system.src.js"></script>
<script>
System.import('app').catch(function(err) { console.error(err); });
</script>
</head>
<!-- 2. Display the application -->
<body>
<my-app>Loading...</my-app>
<!-- application bundle -->
<script src="app/bundle.app.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
因此,当我执行此操作时,我的Hello world消息将显示在屏幕上,但控制台中出现错误 syntax error: unexpected token <
经过大量测试后,我意识到如果我从index.html文件中删除以下行,一切正常,并且不会显示任何错误消息.
System.import('app').catch(function(err){ console.error(err); });
所以...我认为这一行是应用程序的入口点,带有引导程序的主文件,但显然它不需要.我错过了什么吗?
谢谢.
UPDATE
这是有和没有System.import的结果的2个屏幕截图在这两种情况下它似乎都在工作,当System.import不在index.html中时没有错误,否则会有错误.此外,当System.import在索引中时,似乎它正在尝试加载应用程序模块,并且它以某种方式给出错误.我真的不明白为什么会这样.
另外,我的systemjs.config.js关于app: …
我正在尝试在Flutter中创建一个基本的聊天应用程序,并且希望将对话显示在简单的容器中,以使其长度适合于内部文本。当出现溢出错误时,一切工作正常,直到文本不适合容器的长度为止。
我正在使用的代码是这个
Widget _buildMessage(Message message) {
return Row(children: <Widget>[
message.author == username ? Expanded(child: Container()) : Container(),
Container(
padding: EdgeInsets.all(8.0),
margin: EdgeInsets.all(4.0),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(8.0))),
child: Row(
children: <Widget>[
Text(
message.text,
),
SizedBox(
width: 8.0,
),
Padding(
padding: EdgeInsets.only(top: 6.0),
child: Text(
message.time,
style: TextStyle(fontSize: 10.0, color: Colors.grey),
),
),
SizedBox(
width: 8.0,
),
Padding(
padding: EdgeInsets.only(top: 6.0),
child: Text(
message.author,
style: TextStyle(fontSize: 10.0, color: Colors.grey),
),
),
],
)),
message.author != username ? Expanded(child: Container()) : …Run Code Online (Sandbox Code Playgroud) 我在一个Angular应用程序中使用@ngrx,我想抽象一个我已经拥有的循环模式.
我的州通常由许多州组成,如下所示:
myState: {
data: any
isLoading: boolean
isLoaded: boolean
}
Run Code Online (Sandbox Code Playgroud)
所以我最终在代码中做的是订阅它但我只想在状态已加载时收到通知.
this.store
.select(state => state.myState)
.filter(myState => myState.isLoaded)
.map(myState => myState.data)
.do(data => do_whatever_I_need_to_do)
.subscribe();
Run Code Online (Sandbox Code Playgroud)
这对我有用,但我想知道我是否可以简化前3个操作符,因为它们非常复发.
通过使用选择器,我可以创建这样的东西
const selectMyState = (state) => state.myState;
export const getData = createSelector(selectMyState, state => state.data)
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它
this.store
.select(getData)
.do(data => do_whatever_I_need_to_do)
.subscribe();
Run Code Online (Sandbox Code Playgroud)
但后来我错过了过滤器部分,所以即使我的数据尚未加载,我也可能从中获取流事件.
有没有办法将这个丢失的过滤器包含在observable中?我知道createSelector有一个函数作为param,所以我可以在那里做一些代码,但我不知道如何使用它来过滤不是数据,而是事件本身.
有任何想法吗?谢谢!
我想从 dart 中具有特定延迟的列表中发出流中的值。
因此,从 [1,2,3](这是一个常规列表)中,我想像在单独的事件中一样发出值1...2...3。
我尝试过这样的事情
List<int> myList = [1,2,3];
Subject _current = BehaviorSubject<int>();
Stream<int> get current$ => _current.stream.delay(Duration(seconds:1));
myList.forEach(current.add);
Run Code Online (Sandbox Code Playgroud)
但我得到...123的是,所以这将整个流延迟 1 秒,而不是列表中的每个值。
有任何想法吗?谢谢