小编Ste*_*fan的帖子

从现有项目构建角度元素

我们有一个现有的Angular 8项目,其中包含许多常用组件(例如custom datepickers, numeric inputs, ...)。该项目本身是一个标准的Angular应用程序。

我们希望将其中一些组件提取为Angular元素,以便可以在其他Angular应用程序甚至与Angular不相关的其他项目中使用。

是否可以通过仅在生成的JavaScript文件中包含特定于单个Angular元素的代码的方式构建项目?

我需要的是这样的: ng build --element myDatePicker

这应该myDatePicker-Element只为所有具有所有所需依赖项的项目生成所有JavaScript文件,而无需从项目中获取任何其他代码(如other components, modules, ...)。

使用时,整个应用仍应正常构建ng build

angular-cli angular angular-elements

13
推荐指数
3
解决办法
668
查看次数

在MvvmCross上使用Android上的通知

我确实想创建一个实现类似通知服务的插件.

所以我现在正在做的是这样的:

        var activity = Mvx.Resolve<IMvxAndroidCurrentTopActivity>().Activity;
        var builder = new NotificationCompat.Builder(activity.ApplicationContext)
            .SetContentTitle(title)
            .SetSmallIcon(Resource.Drawable.Icon)
            .SetContentText(message);
        var notificationManager = (NotificationManager)activity.ApplicationContext.GetSystemService(Context.NotificationService);
        notificationManager.Notify(0, builder.Build());
Run Code Online (Sandbox Code Playgroud)

这工作正常,并显示应显示的通知.下一步是,我想从通知导航到我的活动.这意味着在MvvmCross中我确实希望导航到我的ViewModel.

但是,我现在如何将ShowViewModel <...>() - 命令打包到此通知中?这甚至可能吗?

在原生android上我会创建一个PendingIntent,它确实指向我要显示的Activity.

任何的想法?暗示?小费?:-)

mono android mvvmcross

8
推荐指数
1
解决办法
1685
查看次数

在MvvmCross中使用MvxGridView

我想要做的是在网格中显示多个项目的简单屏幕.这可以在Android上使用GridView轻松存档.

在MvvmCross中,我想我必须使用MvxGridView来存档相同的内容.

这是我的axml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
  <Mvx.MvxGridView
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     local:MvxBind="ItemsSource Items"
     local:MvxItemTemplate="@layout/itemview" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

itemview:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:minWidth="25px"
    android:minHeight="25px">
    <TextView
        android:text="Text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        local:MvxBind="Text Name" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

我的ViewModel:

using System.Collections.ObjectModel;
using Cirrious.MvvmCross.ViewModels;

namespace GridViewBug.Core.ViewModels
{
    public class FirstViewModel
        : MvxViewModel
    {
        public FirstViewModel()
        {
            Items = new ObservableCollection<TestClass>();
            Items.Add(new TestClass { Name = "Test1" });
            Items.Add(new TestClass { Name = "Test2" });
        }

        private string _hello …
Run Code Online (Sandbox Code Playgroud)

c# xamarin.android mvvmcross

5
推荐指数
1
解决办法
4507
查看次数

使用 CastPlayer 更改字幕

我确实有一个 HLS 直播,它由指向清单文件的 URI 表示。清单文件还额外定义了字幕。

使用 ExoPlayer 时,我可以使用 TrackSelector,将其附加到 ExoPlayer,这样我就可以选择向用户显示可用的字幕(并通过 TrackSelector 进行更改)。

我想只用 CastPlayer 做同样的事情。这是我能想象的最简单的活动:

 public class PlayerActivity extends AppCompatActivity implements SessionAvailabilityListener {

    private MediaRouteButton castButton;
    private CastPlayer castPlayer;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.player_activity);

        castButton = findViewById(R.id.castButton);
        CastButtonFactory.setUpMediaRouteButton(this, castButton);

        CastContext castContext = CastContext.getSharedInstance(this);
        castPlayer = new CastPlayer(castContext);
        castPlayer.setSessionAvailabilityListener(this);
    }

    @Override
    public void onCastSessionAvailable() {
        MediaMetadata movieMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE);

        MediaInfo mediaInfo = new MediaInfo.Builder("https://myuri.ch/video.m3u8")
                .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
                .setMetadata(movieMetadata)
                .build();

        MediaQueueItem mediaItem = new MediaQueueItem.Builder(mediaInfo).build();
        castPlayer.loadItems(new MediaQueueItem[]{mediaItem}, 0, 0, Player.REPEAT_MODE_OFF); …
Run Code Online (Sandbox Code Playgroud)

android chromecast exoplayer

5
推荐指数
1
解决办法
1178
查看次数

如何通过无输入的自定义控件以角度形式触发change()

我确实想创建一个不包含任何输入的自定义控件。每当控件更改时,我都希望保存完整的表单。

我们当前的方法使用如下形式的事件更改:

 <form #demoForm="ngForm" (change)="onChange()">
      <custom-input name="someValue" [(ngModel)]="dataModel">
      </custom-input>
 </form>
Run Code Online (Sandbox Code Playgroud)

如您所见,我们使用“ change”事件来响应表单中的任何更改。只要我们具有输入,复选框,...作为控件,此方法就可以正常工作。

但是我们的自定义控件仅存在于我们可以单击的简单div之外。每当我单击div时,控件的值都会增加1。但是不会触发表单的“更改”事件。我是否必须以某种方式将我的自定义控件链接到表单?还是有需要触发的事件?

import { Component, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';

@Component({
    selector: 'custom-input',
    template: `<div (click)="update()">Click</div>`,
    providers: [{
        provide: NG_VALUE_ACCESSOR,
        useExisting: forwardRef(() => CustomInputComponent),
        multi: true
    }]
})
export class CustomInputComponent implements ControlValueAccessor {

    private onTouchedCallback: () => void = () => {};
    private onChangeCallback: (_: any) => void = () => {};

    update(){
      this.value++;
    }

    get value(): any {
        return this.innerValue;
    }; …
Run Code Online (Sandbox Code Playgroud)

javascript forms angular

3
推荐指数
1
解决办法
1万
查看次数